diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2913660396..b48817374b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,6 @@ on: push: tags: - "v*.*.*" - workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/README.md b/README.md index 480ef589f4..51a26ebd98 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![NeoForged Logo](./src/main/resources/icon.png) +![Ragium Logo](./src/main/resources/icon.png) Ragium ============= diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index bcb37453fe..6f091271fa 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.client import hiiragi283.lib.HTConstants -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.event.HTRegisterWidgetRendererEvent import hiiragi283.lib.fluid.FluidStackTintSource import hiiragi283.lib.fluid.HTFluidModelRegister @@ -24,6 +23,7 @@ import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket import net.minecraft.client.resources.model.sprite.Material +import net.minecraft.world.item.DyeColor import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus import net.neoforged.fml.ModContainer @@ -62,10 +62,10 @@ data object RagiumClient : HTClientMod() { } override fun registerFluidModels(register: HTFluidModelRegister) { - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { register.register(RagiumFluids.DYES[color]) { dull() - color.color.let(::colorTint) + color.textureDiffuseColor.let(::colorTint) } } @@ -77,7 +77,7 @@ data object RagiumClient : HTClientMod() { tintSource = FluidStackTintSource { stack: FluidStack -> "ff000000".hexToInt() or - HTPotionHelper.getPotion(stack).color + HTPotionHelper.getContents(stack).color } } register.register(RagiumFluids.OMINOUS_FLUX) { @@ -175,9 +175,9 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0x66cc33)) } - register.register(RagiumFluids.MOLTEN_STEEL) { - molten() - colorTint(Color(0x999999)) + register.register(RagiumFluids.BLEACH) { + dull() + colorTint(Color(0xccff99)) } register.register(RagiumFluids.ORE_SLURRY) { diff --git a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt index 12c97e8246..7f4bcc3b06 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt @@ -15,7 +15,7 @@ data object RagiumClientEventHandler { fun onFluidTooltip(event: FluidTooltipEvent) { val stack: FluidStack = event.fluidStack if (stack.`is`(RagiumFluids.POTION.getOrThrow())) { - HTPotionHelper.getPotion(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) + HTPotionHelper.getContents(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) } } } 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 ddb5e311b5..df6d2431c5 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -3,32 +3,33 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.integration.jei.HTJeiPlugin import hiiragi283.lib.integration.jei.HTJeiRecipeHelper -import hiiragi283.lib.integration.jei.category.HTDoubleItemToItemRecipeCategory -import hiiragi283.lib.integration.jei.category.HTFluidToItemRecipeCategory +import hiiragi283.lib.integration.jei.category.HTDoubleItemToRecipeCategory 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.HTItemToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToItemAndFluidRecipeCategory -import hiiragi283.lib.integration.jei.category.HTItemToItemRecipeCategory +import hiiragi283.lib.integration.jei.category.HTSingleRecipeCategory import hiiragi283.lib.item.HTPotionBasedItem -import hiiragi283.lib.item.alchemy.BottledPotionContents +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.recipe.HTOreSlurryData import hiiragi283.ragium.api.data.recipe.HTOreSlurryDataHelper -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTRefiningRecipeCategory import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import mezz.jei.api.JeiPlugin +import mezz.jei.api.constants.RecipeTypes import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.helpers.IPlatformFluidHelper import mezz.jei.api.neoforge.NeoForgeTypes @@ -43,6 +44,8 @@ import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStackTemplate +import net.minecraft.world.item.alchemy.Potion +import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.fluids.FluidStack @@ -51,11 +54,23 @@ import kotlin.streams.asSequence @JeiPlugin class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { - override fun registerItemSubtypes(registration: ISubtypeRegistration) { - // Potion-Based Item - HTPhysicalSideHelper + companion object { + @JvmStatic + private fun listItems(): Sequence> = HTPhysicalSideHelper .filteredLookup(BuiltInRegistries.ITEM) .listElements() + .asSequence() + + @JvmStatic + private fun listPotions(): Sequence> = HTPhysicalSideHelper + .filteredLookup(BuiltInRegistries.POTION) + .listElements() + .asSequence() + } + + override fun registerItemSubtypes(registration: ISubtypeRegistration) { + // Potion-Based Item + listItems() .map(Holder::value) .forEach { item: Item -> if (item is HTPotionBasedItem) { @@ -83,12 +98,9 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { override fun registerExtraIngredients(registration: IExtraIngredientRegistration) { registration.addExtraIngredients( NeoForgeTypes.FLUID_STACK, - HTPhysicalSideHelper - .filteredLookup(BuiltInRegistries.POTION) - .listElements() - .map(::BottledPotionContents) - .filter { !it.isWater } - .map(BottledPotionContents::toFluidStack) + listPotions() + .filter { !it.`is`(Potions.WATER) } + .map(HTPotionHelper::createFluid) .toList() ) registration.addExtraIngredients( @@ -105,16 +117,16 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addRecipeCategories( // Mechanical - HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ASSEMBLING), - HTItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), + HTDoubleItemToRecipeCategory.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), // Heat - HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ALLOYING), - HTFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), - HTItemToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MELTING), + HTDoubleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ALLOYING), + HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), + HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), RTRefiningRecipeCategory(guiHelper), // Chemical @@ -124,9 +136,10 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { RTReactingRecipeCategory(guiHelper), // Bio HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BREWING), - HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING) + HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING), // Electronics // Arcane + RTEnchantingRecipeCategory(guiHelper) ) } @@ -158,24 +171,63 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PLANTING, RagiumRecipeLookups.PLANTING) // Electronics // Arcane + HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.ENCHANTING, RagiumRecipeLookups.ENCHANTING) registerDynamicRecipes(registration) } private fun registerDynamicRecipes(registration: IRecipeRegistration) { + // Mechanical + registration.addRecipes( + RagiumJeiRecipeTypes.DRAINING, + listPotions() + .flatMap { potion: Holder.Reference -> + HTBottleType.entries.map { bottleType: HTBottleType -> + RagiumRecipeBuilders.draining { + +HTJeiRecipeHelper.fakeItem( + ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(potion)) + ) + itemResult { +bottleType.emptyItem } + fluidResult { from(HTPotionHelper.createFluid(potion, HTPotionHelper.BOTTLE_AMOUNT)) } + recipeId replace potion.getKeyOrThrow() + .identifier() + .withPrefix("potion_bottle/${bottleType.serializedName}/") + }.buildSynthetic() + } + }.toList() + ) + registration.addRecipes( + RagiumJeiRecipeTypes.FILLING, + listPotions() + .flatMap { potion: Holder.Reference -> + HTBottleType.entries.map { bottleType: HTBottleType -> + RagiumRecipeBuilders.filling { + itemIngredient { items { +bottleType.emptyItem } } + fluidIngredient { + +HTPotionFluidIngredient(potion) + amount = HTPotionHelper.BOTTLE_AMOUNT + } + result { + from(ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(potion))) + } + recipeId replace potion.getKeyOrThrow() + .identifier() + .withPrefix("potion_bottle/${bottleType.serializedName}/") + }.buildSynthetic() + } + }.toList() + ) // Chemical registration.addRecipes( RagiumJeiRecipeTypes.MIXING, - HTPhysicalSideHelper.filteredLookup(BuiltInRegistries.ITEM) - .listElements() - .asSequence() + listItems() .mapNotNull { input: Holder -> - val slurryData: Holder = - input.components().get(RagiumDataComponents.ORE_SLURRY_DATA) ?: return@mapNotNull null + val result: FluidStack = + HTOreSlurryDataHelper.createFluid(input.components()) ?: return@mapNotNull null RagiumRecipeBuilders.mixing { itemIngredient = HTJeiRecipeHelper.fakeItem(SlotDisplay.ItemSlotDisplay(input)) fluidIngredient = HTJeiRecipeHelper.fakeFluid(RagiumFluids.SULFURIC_ACID) - result { from(HTOreSlurryDataHelper.createFluid(slurryData)) } + result { from(result) } recipeId replace input.getKeyOrThrow().identifier().withPrefix("solving/") }.buildSynthetic() }.toList() @@ -205,12 +257,22 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addCraftingStation(RagiumJeiRecipeTypes.COMPRESSING, RagiumBlocks.COMPRESSOR) registration.addCraftingStation(RagiumJeiRecipeTypes.CUTTING, RagiumBlocks.CUTTING_MACHINE) // Heat + registration.addCraftingStation(RagiumJeiRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) registration.addCraftingStation(RagiumJeiRecipeTypes.FREEZING, RagiumBlocks.FREEZER) registration.addCraftingStation(RagiumJeiRecipeTypes.MELTING, RagiumBlocks.MELTER) + registration.addCraftingStation(RagiumJeiRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) + registration.addCraftingStation(RagiumJeiRecipeTypes.REFINING, RagiumBlocks.REFINERY) + registration.addCraftingStation(RecipeTypes.SMELTING, RagiumBlocks.SMELTER) + registration.addCraftingStation(RecipeTypes.BLASTING, RagiumBlocks.SMELTER) + registration.addCraftingStation(RecipeTypes.SMOKING, RagiumBlocks.SMELTER) // Chemical registration.addCraftingStation(RagiumJeiRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) + registration.addCraftingStation(RagiumJeiRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) + registration.addCraftingStation(RagiumJeiRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + registration.addCraftingStation(RagiumJeiRecipeTypes.MIXING, RagiumBlocks.MIXER) // Bio registration.addCraftingStation(RagiumJeiRecipeTypes.BREWING, RagiumBlocks.BREWERY) + registration.addCraftingStation(RagiumJeiRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics // 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 3c9398c3ce..f4da070c5a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -9,13 +9,11 @@ import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe +import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.block.RagiumBlocks -import hiiragi283.ragium.common.item.RagiumItems -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.Items data object RagiumJeiRecipeTypes { // Mechanical @@ -37,16 +35,16 @@ data object RagiumJeiRecipeTypes { @JvmField val DRAINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.DRAINING, ItemStack(Items.GLASS_BOTTLE)) + HTJeiRecipeType(RagiumRecipeTypes.DRAINING, RagiumBlocks.MACHINE_CASING) @JvmField val FILLING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.FILLING, ItemStack(Items.GLASS_BOTTLE)) + HTJeiRecipeType(RagiumRecipeTypes.FILLING, RagiumBlocks.MACHINE_CASING) // Heat @JvmField val ALLOYING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, ItemStack(Items.FURNACE)) + HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) @JvmField val FREEZING: HTHolderJeiRecipeType = @@ -58,11 +56,11 @@ data object RagiumJeiRecipeTypes { @JvmField val PYROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumItems.COAL_COKE) + HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) @JvmField val REFINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumItems.COAL_COKE) + HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumBlocks.REFINERY) // Chemical @JvmField @@ -71,15 +69,15 @@ data object RagiumJeiRecipeTypes { @JvmField val ELECTROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, ItemStack(Items.LIGHTNING_ROD)) + HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) @JvmField val MIXING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.MIXING, ItemStack(Items.BREEZE_ROD)) + HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) @JvmField val REACTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REACTING, ItemStack(Items.GOLDEN_APPLE)) + HTJeiRecipeType(RagiumRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) // Bio @JvmField @@ -88,9 +86,12 @@ data object RagiumJeiRecipeTypes { @JvmField val PLANTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PLANTING, ItemStack(Items.FLOWER_POT)) + HTJeiRecipeType(RagiumRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics // Arcane + @JvmField + val ENCHANTING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.ENCHANTING, RagiumBlocks.MACHINE_CASING) } 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 b5811322f3..86c72e9f3e 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 @@ -41,7 +41,7 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : val result: HTFluidResult = recipe.results[index] outputSlots[index] .add(result) - .setSlotBackground(HTBackgroundType.OUTPUT, result.amount) + .setFluidSlot(result.amount) } } 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 new file mode 100644 index 0000000000..5c79c56d4f --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt @@ -0,0 +1,27 @@ +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.client.integration.jei.RagiumJeiRecipeTypes +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.helpers.IGuiHelper + +class RTEnchantingRecipeCategory(guiHelper: IGuiHelper) : + HTDoubleItemToRecipeCategory( + guiHelper, + RagiumJeiRecipeTypes.ENCHANTING, + RTEnchantingRecipe.CODEC + ) { + override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(RTEnchantingRecipe.BOOK_INGREDIENT) + } + + override fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(recipe.result.create()) + } +} 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 1e8d460cd2..541fd9e259 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 @@ -43,7 +43,7 @@ class RTReactingRecipeCategory(guiHelper: IGuiHelper) : val itemOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(7), getPosition(0)) .setSlotBackground(HTBackgroundType.OUTPUT) - fluidResult?.let { fluidOutput.add(it).setSlotBackground(HTBackgroundType.OUTPUT, it.amount) } + fluidResult?.let { fluidOutput.add(it).setFluidSlot(it.amount) } itemResult?.let(itemOutput::add) } diff --git a/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt b/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt index 50841b42dd..09c7492f9d 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt @@ -1,9 +1,9 @@ package hiiragi283.ragium.client.render -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.text.Text import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent +import net.minecraft.ChatFormatting import net.minecraft.client.gui.Font import net.minecraft.client.gui.GuiGraphicsExtractor import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent @@ -13,7 +13,7 @@ import net.minecraft.world.item.ItemStack @JvmRecord data class HTMemoryDiscClientTooltipComponent private constructor( val data: ItemStack, - val text: Text = RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA.translateColored(HTDefaultColor.YELLOW, data) + val text: Text = RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA.translateColored(ChatFormatting.YELLOW, data) ) : ClientTooltipComponent { constructor(tooltip: HTMemoryDiscTooltipComponent) : this(tooltip.data.create()) diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 0b0ff1266c..76360372ac 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -10,9 +10,11 @@ import hiiragi283.ragium.data.loot.RagiumBlockLootTableProvider import hiiragi283.ragium.data.loot.RagiumGlobalLootModifierProvider import hiiragi283.ragium.data.loot.RagiumGlobalLootTableProvider import hiiragi283.ragium.data.model.RagiumModelProvider +import hiiragi283.ragium.data.recipe.RagiumArcaneRecipeProvider import hiiragi283.ragium.data.recipe.RagiumBioRecipeProvider import hiiragi283.ragium.data.recipe.RagiumChemicalRecipeProvider import hiiragi283.ragium.data.recipe.RagiumCommonRecipeProvider +import hiiragi283.ragium.data.recipe.RagiumElectronicsRecipeProvider import hiiragi283.ragium.data.recipe.RagiumHeatRecipeProvider import hiiragi283.ragium.data.recipe.RagiumMechanicalRecipeProvider import hiiragi283.ragium.data.recipe.RagiumRecipePriorityProvider @@ -51,10 +53,12 @@ data object RagiumDataGen { event.createProvider(RagiumVanillaRecipeProvider::Runner) event.createProvider(::RagiumCommonRecipeProvider) - event.createProvider(::RagiumBioRecipeProvider) - event.createProvider(::RagiumChemicalRecipeProvider) - event.createProvider(::RagiumHeatRecipeProvider) event.createProvider(::RagiumMechanicalRecipeProvider) + event.createProvider(::RagiumHeatRecipeProvider) + event.createProvider(::RagiumChemicalRecipeProvider) + event.createProvider(::RagiumBioRecipeProvider) + event.createProvider(::RagiumElectronicsRecipeProvider) + event.createProvider(::RagiumArcaneRecipeProvider) event.createProvider(::RagiumRecipePriorityProvider) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index 550df8b35e..1f7760debb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -85,32 +85,32 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur ) // Mechanical createSimple( - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumAdvancementKeys.SOOTY_IRON, - RagiumItems.getCasing(HTMachineType.MECHANICAL), + RagiumItems.getParts(HTMachineType.MECHANICAL), AdvancementType.GOAL ) createSimple( RagiumAdvancementKeys.ASSEMBLER, - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumBlocks.ASSEMBLER ) createSimple( RagiumAdvancementKeys.CRUSHER, - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumBlocks.CRUSHER ) // Heat createSimple( - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumAdvancementKeys.ASSEMBLER, - RagiumItems.getCasing(HTMachineType.HEAT), + RagiumItems.getParts(HTMachineType.HEAT), AdvancementType.GOAL ) createSimple( RagiumAdvancementKeys.ALLOY_SMELTER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, - RagiumBlocks.FREEZER + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, + RagiumBlocks.ALLOY_SMELTER ) createSimple( RagiumAdvancementKeys.BLACK_STEEL, @@ -120,24 +120,24 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur ) createSimple( RagiumAdvancementKeys.FREEZER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumBlocks.FREEZER ) createSimple( RagiumAdvancementKeys.MELTER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumBlocks.MELTER ) // Chemical createSimple( - RagiumAdvancementKeys.CHEMICAL_MACHINE_CASING, + RagiumAdvancementKeys.CHEMICAL_MACHINE_PARTS, RagiumAdvancementKeys.BLACK_STEEL, - RagiumItems.getCasing(HTMachineType.CHEMICAL), + RagiumItems.getParts(HTMachineType.CHEMICAL), AdvancementType.GOAL ) createSimple( RagiumAdvancementKeys.CHEMICAL_BATH, - RagiumAdvancementKeys.CHEMICAL_MACHINE_CASING, + RagiumAdvancementKeys.CHEMICAL_MACHINE_PARTS, RagiumBlocks.CHEMICAL_BATH ) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index c8619df5c9..569592be53 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -26,14 +26,14 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumAdvancementKeys.SOOTY_IRON, "Acquire Blackware", "Craft a Sooty Iron Ingot") add( - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, "Mechanical Machines", "Craft a Machine Casing (Mechanical)" ) add(RagiumAdvancementKeys.ASSEMBLER, "Rava(n)gers, assemble!", "Acquire Assembler") add(RagiumAdvancementKeys.CRUSHER, "Macerator, Pulverizer, or Crusher?", "Acquire Crusher") - add(RagiumAdvancementKeys.HEAT_MACHINE_CASING, "Heat And Cool", "Craft a Machine Casing (Heat)") + add(RagiumAdvancementKeys.HEAT_MACHINE_PARTS, "Heat And Cool", "Craft a Machine Casing (Heat)") add(RagiumAdvancementKeys.BLACK_STEEL, "Black Roaring", "Craft a Black Steel Ingot") add(RagiumAdvancementKeys.FREEZER, "My power is 530,000.", "Acquire Freezer") add(RagiumAdvancementKeys.MELTER, "(S)melter(y)", "Acquire Melter") @@ -43,16 +43,29 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.COMPRESSOR, "Compressor") add(RagiumBlocks.CUTTING_MACHINE, "Cutting Machine") + add(RagiumBlocks.ALLOY_SMELTER, "Alloy Smelter") add(RagiumBlocks.FREEZER, "Freezer") add(RagiumBlocks.MELTER, "Melter") + add(RagiumBlocks.PYROLYZER, "Pyrolyzer") + add(RagiumBlocks.REFINERY, "Refinery") + add(RagiumBlocks.SMELTER, "Smelter") add(RagiumBlocks.CHEMICAL_BATH, "Chemical Bath") + add(RagiumBlocks.CHEMICAL_REACTOR, "Chemical Reactor") + add(RagiumBlocks.ELECTROLYZER, "Electrolyzer") + add(RagiumBlocks.MIXER, "Mixer") add(RagiumBlocks.BREWERY, "Brewery") + add(RagiumBlocks.PLANTER, "Planter") + add(RagiumBlocks.SCANNER, "Laser Scanner") + + add(RagiumBlocks.CREATIVE_BATTERY, "Creative Battery") + + add(RagiumBlocks.MACHINE_CASING, "Machine Casing") // Fluid addFluid(RagiumFluids.HONEY, "Honey") - add(RagiumFluids.POTION.getFluidType().descriptionId, "Invalid Potion") + // add(RagiumFluids.POTION.getFluidType().descriptionId, "Invalid Potion") add(RagiumFluids.POTION.bucketHolder, $$"%1$s Bucket") addFluid(RagiumFluids.OMINOUS_FLUX, "Ominous Flux") addFluid(RagiumFluids.MOLTEN_GLASS, "Molten Glass") @@ -79,7 +92,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "Sulfuric Acid") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") - addFluid(RagiumFluids.MOLTEN_STEEL, "Molten Steel") + addFluid(RagiumFluids.BLEACH, "Bleach") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") @@ -92,6 +105,9 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") + add(RagiumItems.BEESWAX, "Beeswax") + add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") + add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") add(RagiumItems.WITHER_STAR, "Wither Star") @@ -136,6 +152,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.BREWING, "Brewing") add(RagiumRecipeTypes.PLANTING, "Planting") + add(RagiumRecipeTypes.ENCHANTING, "Enchanting") + // Text - Lib add(HTCommonTranslation.ERROR, "Error") add(HTCommonTranslation.INFINITE, "Infinite") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 187ff7aa07..e129360a36 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -25,11 +25,11 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumAdvancementKeys.ROOT, "ラギウム", "ラギウムへようこそ!") add(RagiumAdvancementKeys.SOOTY_IRON, "黒鉄(くろがね)を手に入れる", "煤鉄をつくる") - add(RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, "機械・加工・機械", "マシンケーシング(機械加工)を作る") + add(RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, "機械・加工・機械", "マシンケーシング(機械加工)を作る") add(RagiumAdvancementKeys.ASSEMBLER, "ラヴェ(ン)ジャーズ,アッセンブル!", "組立機を手に入れる") add(RagiumAdvancementKeys.CRUSHER, "Macerator, Pulverizer, or Crusher?", "粉砕機を手に入れる") - add(RagiumAdvancementKeys.HEAT_MACHINE_CASING, "Heat And Cool", "マシンケーシング(熱)を作る") + add(RagiumAdvancementKeys.HEAT_MACHINE_PARTS, "Heat And Cool", "マシンケーシング(熱)を作る") add(RagiumAdvancementKeys.BLACK_STEEL, "黒い咆哮", "黒鋼をつくる") add(RagiumAdvancementKeys.FREEZER, "私の消費電力は53万です", "冷凍機を手に入れる") add(RagiumAdvancementKeys.MELTER, "融けてしまいそう", "溶融炉を手に入れる") @@ -39,16 +39,29 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.COMPRESSOR, "圧縮機") add(RagiumBlocks.CUTTING_MACHINE, "裁断機") + add(RagiumBlocks.ALLOY_SMELTER, "合金炉") add(RagiumBlocks.FREEZER, "冷凍機") add(RagiumBlocks.MELTER, "溶融炉") + add(RagiumBlocks.PYROLYZER, "熱分解炉") + add(RagiumBlocks.REFINERY, "精製機") + add(RagiumBlocks.SMELTER, "製錬炉") - add(RagiumBlocks.CHEMICAL_BATH, "化学槽") + add(RagiumBlocks.CHEMICAL_BATH, "化学浴槽") + add(RagiumBlocks.CHEMICAL_REACTOR, "化学反応槽") + add(RagiumBlocks.ELECTROLYZER, "電解機") + add(RagiumBlocks.MIXER, "混合機") add(RagiumBlocks.BREWERY, "醸造機") + add(RagiumBlocks.PLANTER, "栽培機") + add(RagiumBlocks.SCANNER, "レーザースキャナ") + + add(RagiumBlocks.CREATIVE_BATTERY, "クリエイティブ用バッテリー") + + add(RagiumBlocks.MACHINE_CASING, "機械ケーシング") // Fluid addFluid(RagiumFluids.HONEY, "ハチミツ") - add(RagiumFluids.POTION.getFluidType().descriptionId, "無効なポーション") + // add(RagiumFluids.POTION.getFluidType().descriptionId, "無効なポーション") add(RagiumFluids.POTION.bucketHolder, $$"%1$s入りバケツ") addFluid(RagiumFluids.OMINOUS_FLUX, "不吉な流動体") addFluid(RagiumFluids.MOLTEN_GLASS, "溶融ガラス") @@ -75,7 +88,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "硫酸") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") - addFluid(RagiumFluids.MOLTEN_STEEL, "溶融した鋼鉄") + addFluid(RagiumFluids.BLEACH, "漂白剤") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") @@ -88,6 +101,9 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") + add(RagiumItems.BEESWAX, "密猟") + add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") + add(RagiumItems.LINGERING_BOTTLE, "残留瓶") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") add(RagiumItems.WITHER_STAR, "ウィザースター") @@ -132,6 +148,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.BREWING, "醸造") add(RagiumRecipeTypes.PLANTING, "栽培") + add(RagiumRecipeTypes.ENCHANTING, "エンチャント") + // Text - Lib add(HTCommonTranslation.ERROR, "エラー") add(HTCommonTranslation.INFINITE, "無限") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 04f1d5c5b7..de4b3542ed 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -1,7 +1,7 @@ package hiiragi283.ragium.data.lang import hiiragi283.lib.collection.forEach -import hiiragi283.lib.color.HTDefaultColor +import hiiragi283.lib.color.HTColoredCollection import hiiragi283.lib.data.lang.HTLangName import hiiragi283.lib.data.lang.HTLangPatternProvider import hiiragi283.lib.data.lang.HTLangProvider @@ -15,6 +15,7 @@ import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems +import net.minecraft.world.item.DyeColor interface RagiumLangProvider { fun addPatternTranslations(provider: HTLangProvider) { @@ -25,10 +26,17 @@ interface RagiumLangProvider { .forEach { (part: HTBlockPart, material: RagiumMaterial, block: HTHasTranslationKey) -> provider.add(block, part, material) } + val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") + for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { + provider.add(casing, casingPattern, machineType) + } // Fluid val dyePattern = HTLangPatternProvider("%s Dye", "%sの染料") - for (color: HTDefaultColor in HTDefaultColor.entries) { - provider.addFluid(RagiumFluids.DYES[color], dyePattern.translate(langType, color)) + for (color: DyeColor in DyeColor.entries) { + provider.addFluid( + RagiumFluids.DYES[color], + dyePattern.translate(langType, HTColoredCollection.TRANSLATED_NAMES[color]) + ) } // Item RagiumItems.MATERIAL_ITEMS @@ -43,9 +51,9 @@ interface RagiumLangProvider { } provider.add(RagiumItems.COAL_COKE, RagiumMaterial.Fuel.COAL_COKE) - val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "マシンケーシング (%s)") - for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumItems.MACHINE_CASINGS) { - provider.add(casing, casingPattern, machineType) + val partsPattern = HTLangPatternProvider("Machine Parts (%s)", "機械部品 (%s)") + for ((machineType: HTLangName, parts: HTHasTranslationKey) in RagiumItems.MACHINE_PARTS) { + provider.add(parts, partsPattern, machineType) } for (toolType: HTToolType in HTToolType.entries) { provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Metal.SOOTY_IRON) diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index a803d92220..d05b26c30f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -8,6 +8,7 @@ import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.HTSimpleBlockItemWithKey import hiiragi283.lib.resource.HTValueWithId import hiiragi283.lib.resource.blockId +import hiiragi283.lib.resource.vanillaId import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.block.HTMachineBlock @@ -16,7 +17,6 @@ import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.client.data.models.BlockModelGenerators import net.minecraft.client.data.models.ItemModelGenerators -import net.minecraft.client.data.models.MultiVariant import net.minecraft.client.data.models.blockstates.MultiVariantGenerator import net.minecraft.client.data.models.blockstates.PropertyDispatch import net.minecraft.client.data.models.model.ModelTemplates @@ -43,7 +43,8 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP add(RagiumFluids.COAL_TAR) add(RagiumFluids.CRUDE_OIL) add(RagiumFluids.SULFURIC_ACID) - add(RagiumFluids.MOLTEN_STEEL) + + add(RagiumFluids.ORE_SLURRY) } for (content: HTFluidContent in RagiumFluids.REGISTER.asSequence()) { // Item @@ -61,56 +62,71 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } private fun registerBlockModels(generators: BlockModelGenerators) { - RagiumBlocks.MATERIAL_BLOCKS.values.forEach { generators.createTrivialCube(it.block.getOrThrow()) } + sequence { + yieldAll(RagiumBlocks.MATERIAL_BLOCKS.values) + + yield(RagiumBlocks.CREATIVE_BATTERY) // TODO + + yield(RagiumBlocks.MACHINE_CASING) + }.forEach { generators.createTrivialCube(it.block.getOrThrow()) } // Machine + val inactiveModels: Map = HTMachineType.entries + .associateWith { machineType: HTMachineType -> + val blockId: Identifier = RagiumAPI.id(HTConstants.BLOCK, "machine", machineType.materialName) + ModelTemplates.CUBE_ORIENTABLE.create( + blockId, + textureMapping(machineType).put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), + generators.modelOutput + ) + } for ((machineType: HTMachineType, blockItem: HTSimpleBlockItemWithKey) in RagiumBlocks.MACHINES.flatEntries) { val block: HTValueWithId = blockItem.block - val inactiveModel: MultiVariant = BlockModelGenerators.plainVariant( - machineModel(generators, machineType, block, false) - ) - val activeModel: MultiVariant = BlockModelGenerators.plainVariant( - machineModel(generators, machineType, block, true) - ) generators.blockStateOutput.accept( MultiVariantGenerator.dispatch(block.getOrThrow()) .with( PropertyDispatch.initial(HTMachineBlock.IS_ACTIVE) - .select(false, inactiveModel) - .select(true, activeModel) + .select(false, BlockModelGenerators.plainVariant(inactiveModels[machineType]!!)) + .select( + true, + BlockModelGenerators.plainVariant(machineModel(generators, machineType, block)) + ) ).with(BlockModelGenerators.ROTATION_HORIZONTAL_FACING) ) } + // Decoration + for ((machineType: HTMachineType, block: HTSimpleBlockItemWithKey) in RagiumBlocks.MACHINE_CASINGS) { + generators.createSimple( + block.block.getOrThrow(), + ModelTemplates.CUBE_TOP.createBlock( + block.block, + textureMapping(machineType), + generators.modelOutput + ) + ) + } } private fun machineModel( generators: BlockModelGenerators, machineType: HTMachineType, - block: HTValueWithId, - isActive: Boolean + block: HTValueWithId ): Identifier { val blockId: Identifier = block.idOrThrow.blockId - val mapping: TextureMapping = TextureMapping() - .put(TextureSlot.TOP, Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing"))) - .put( - TextureSlot.SIDE, - Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing", machineType.materialName)) - ) - return when (isActive) { - true -> ModelTemplates.CUBE_ORIENTABLE.create( - blockId.withSuffix("_active"), - mapping.put(TextureSlot.FRONT, Material(blockId.withSuffix("_front_active"))), - generators.modelOutput - ) - - false -> ModelTemplates.CUBE_ORIENTABLE.createBlock( - block, - mapping.put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), - generators.modelOutput - ) - } + return ModelTemplates.CUBE_ORIENTABLE.create( + blockId, + textureMapping(machineType).put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), + generators.modelOutput + ) } + private fun textureMapping(machineType: HTMachineType): TextureMapping = TextureMapping() + .put(TextureSlot.TOP, Material(RagiumBlocks.MACHINE_CASING.block.idOrThrow.blockId)) + .put( + TextureSlot.SIDE, + Material(RagiumAPI.id(HTConstants.BLOCK, "machine", "${machineType.materialName}_side")) + ) + private fun registerItemModels(generators: ItemModelGenerators) { val handheld: Set = buildSet { add(RagiumItems.BAMBOO_CHARCOAL) @@ -122,18 +138,29 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP buildSet { addAll(RagiumItems.REGISTER.asSequence()) + remove(RagiumItems.SPLASH_BOTTLE) + remove(RagiumItems.LINGERING_BOTTLE) + remove(RagiumItems.MEMORY_DISC) - removeAll(RagiumItems.MACHINE_CASINGS.values) + removeAll(RagiumItems.MACHINE_PARTS.values) removeAll(handheld) }.forEach { generators.generateFlatItem(it) } + generators.generateFlatItem( + RagiumItems.SPLASH_BOTTLE, + layer = vanillaId(HTConstants.ITEM, "splash_potion") + ) + generators.generateFlatItem( + RagiumItems.LINGERING_BOTTLE, + layer = vanillaId(HTConstants.ITEM, "lingering_potion") + ) generators.generateFlatItem(RagiumItems.MEMORY_DISC, template = ModelTemplates.MUSIC_DISC) - for ((machineType: HTMachineType, casing: HTSimpleDeferredItem) in RagiumItems.MACHINE_CASINGS) { + for ((machineType: HTMachineType, parts: HTSimpleDeferredItem) in RagiumItems.MACHINE_PARTS) { generators.generateFlatItem( - casing, - layer = RagiumAPI.id(HTConstants.ITEM, "casing", machineType.materialName) + parts, + layer = RagiumAPI.id(HTConstants.ITEM, "parts", machineType.materialName) ) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt new file mode 100644 index 0000000000..aa5d09087d --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.data.recipe + +import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.tag.CommonTagPrefixes +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders +import hiiragi283.ragium.api.material.RagiumMaterial +import net.minecraft.core.HolderLookup +import net.minecraft.data.PackOutput +import net.minecraft.world.item.enchantment.Enchantments +import java.util.concurrent.CompletableFuture + +class RagiumArcaneRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : + HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { + override fun exportValues() { + enchanting() + } + + private fun enchanting() { + // Iron -> Protection + RagiumRecipeBuilders.enchanting { + ingredient { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) + count = 64 + } + +registries.getOrThrow(Enchantments.PROTECTION) + }.save(exporter) + // Diamond -> Protection + Unbreaking + RagiumRecipeBuilders.enchanting { + ingredient { + +holderSet(CommonTagPrefixes.GEM, RagiumMaterial.Gem.DIAMOND) + count = 16 + } + result { + set(registries.getOrThrow(Enchantments.PROTECTION), 4) + set(registries.getOrThrow(Enchantments.UNBREAKING), 3) + } + recipeId replace id("diamond_armor") + }.save(exporter) + } + + override fun getName(): String = "Arcane Recipes" +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt index 4875f5b324..841eb992ae 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt @@ -5,7 +5,7 @@ import hiiragi283.lib.item.component.PotionContents import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.RagiumMaterial import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput @@ -62,7 +62,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "hunger" ) } - recipeId replace "potion/hunger" + recipeId replace id("potion/hunger") }.save(exporter) // Wither // Health Boost @@ -82,7 +82,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "darkness" ) } - recipeId replace "potion/darkness" + recipeId replace id("potion/darkness") }.save(exporter) // Golden Apple @@ -96,7 +96,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "golden_apple" ) } - recipeId replace "potion/golden_apple" + recipeId replace id("potion/golden_apple") }.save(exporter) RagiumRecipeBuilders.brewing { itemIngredient { items { +Items.ENCHANTED_GOLDEN_APPLE } } @@ -108,7 +108,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "enchanted_golden_apple" ) } - recipeId replace "potion/enchanted_golden_apple" + recipeId replace id("potion/enchanted_golden_apple") }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 81b2d28407..14d72ec457 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.fluid.RagiumFluids @@ -18,7 +18,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu override fun exportValues() { bathing() electrolyzing() - mixing() } private fun bathing() { @@ -43,15 +42,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu recipeId suffix "_from_pulp" }.save(exporter) - // Molten Steel + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } - fluidIngredient { - +holderSet(RagiumFluids.MOLTEN_STEEL) - amount = 90 - } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } - }.save(exporter) // Molten Glass + Amethyst -> Tinted Glass RagiumRecipeBuilders.bathing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Gem.AMETHYST) } @@ -74,30 +64,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } recipeId suffix "_from_water" }.save(exporter) - // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) - RagiumRecipeBuilders.electrolyzing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } - fluidIngredient { +waterSet() } - result { - +RagiumFluids.HYDROGEN - amount /= 2 - } - result { - +RagiumFluids.CHLORINE - amount /= 2 - } - result { +RagiumFluids.NAOH_SOLUTION } - recipeId suffix "_from_salt_water" - }.save(exporter) - } - - private fun mixing() { - // Naphtha + Redstone -> Anti-rust Oil - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } - fluidIngredient { +holderSet(RagiumFluids.NAPHTHA) } - result { +RagiumFluids.ANTI_RUST_OIL } - }.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 e64c68a825..d5a1b94e7b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks @@ -12,8 +12,12 @@ import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.tags.ItemTags +import net.minecraft.tags.TagKey +import net.minecraft.world.item.Item 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 java.util.concurrent.CompletableFuture class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : @@ -113,7 +117,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.CRUDE_OIL amount = 250 } - recipeId replace "crude_oil_from_soul_sand" + recipeId replace id("crude_oil_from_soul_sand") }.save(exporter) // Soul Soil -> Clay + Crude Oil RagiumRecipeBuilders.pyrolyzing { @@ -123,7 +127,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.CRUDE_OIL amount = 250 } - recipeId replace "crude_oil_from_soul_soil" + recipeId replace id("crude_oil_from_soul_soil") }.save(exporter) // Crude Oil -> Naphtha + Residue Oil RagiumRecipeBuilders.refining { @@ -146,6 +150,12 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu recipeId suffix "_from_naphtha" }.save(exporter) // Naphtha + O2 -> Plastic TODO + // Naphtha + Redstone -> Anti-rust Oil + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } + fluidIngredient { +holderSet(RagiumFluids.NAPHTHA) } + result { +RagiumFluids.ANTI_RUST_OIL } + }.save(exporter) // Tar -> Aromatic Compound + Pitch Coke RagiumRecipeBuilders.pyrolyzing { @@ -169,25 +179,66 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Chemical // private fun chemical() { - hydroChloricAcid() + chlorine() sulfuricAcid() nitricAcid() explosive() } - private fun hydroChloricAcid() { + private fun chlorine() { + // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) + RagiumRecipeBuilders.electrolyzing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } + fluidIngredient { +waterSet() } + result { + +RagiumFluids.HYDROGEN + amount /= 2 + } + result { + +RagiumFluids.CHLORINE + amount /= 2 + } + result { +RagiumFluids.NAOH_SOLUTION } + recipeId suffix "_from_salt_water" + }.save(exporter) + // H2 + Cl2 -> 2 HCl RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.HYDROGEN) } secondaryIngredient { +holderSet(RagiumFluids.CHLORINE) } fluidResult { +RagiumFluids.HYDROGEN_CHLORIDE } }.save(exporter) - // HCl + H2O -> Hcl(aq) + // HCl + H2O -> HCl(aq) RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.HYDROGEN_CHLORIDE) } secondaryIngredient { +waterSet() } fluidResult { +RagiumFluids.HYDROCHLORIC_ACID } }.save(exporter) + + // Cl2 + 2x NaOH(aq) -> 2x NaClO(aq) + H2 + + bleaching() + } + + private fun bleaching() { + setOf( + ItemTags.BANNERS to Items.WHITE_BANNER, + ItemTags.BEDS to Items.WHITE_BED, + ItemTags.HARNESSES to Items.WHITE_HARNESS, + ItemTags.SHULKER_BOXES to Items.WHITE_SHULKER_BOX, + ItemTags.WOOL to Items.WHITE_WOOL, + ItemTags.WOOL_CARPETS to Items.WHITE_CARPET + ).forEach { (input: TagKey, bleached: Item) -> + RagiumRecipeBuilders.bathing { + itemIngredient { +DifferenceIngredient.of(Ingredient.of(holderSet(input)), Ingredient.of(bleached)) } + fluidIngredient { + +holderSet(RagiumFluids.BLEACH) + amount /= 8 + } + result { +bleached } + recipeId prefix "bleaching/" + }.save(exporter) + } } private fun sulfuricAcid() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt new file mode 100644 index 0000000000..6ce0cab2a8 --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -0,0 +1,15 @@ +package hiiragi283.ragium.data.recipe + +import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.core.HolderLookup +import net.minecraft.data.PackOutput +import java.util.concurrent.CompletableFuture + +class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : + HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { + override fun exportValues() { + } + + override fun getName(): String = "Electronics Recipes" +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 2fe478dc94..49d6f66779 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType @@ -27,19 +27,10 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } private fun alloying() { - // Blackstone + Gold -> Gilded Blackstone - RagiumRecipeBuilders.alloying { - primary { items { +Items.BLACKSTONE } } - secondary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) - count = 8 - } - result { +Items.GILDED_BLACKSTONE } - }.save(exporter) // Gold + Netherite Scrap -> Netherite RagiumRecipeBuilders.alloying { primary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) + +dustOrIngot(RagiumMaterial.Metal.GOLD) count = 2 } secondary { @@ -48,16 +39,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } result { +Items.NETHERITE_INGOT } }.save(exporter) - // Gold Block + Apple -> Enchanted Golden Apple - RagiumRecipeBuilders.alloying { - primary { items { +Items.APPLE } } - secondary { - +holderSet(CommonTagPrefixes.STORAGE_BLOCK, RagiumMaterial.Metal.GOLD) - count = 8 - } - result { +Items.ENCHANTED_GOLDEN_APPLE } - time *= 8 - }.save(exporter) // Machine Casing RagiumRecipeBuilders.alloying { @@ -65,8 +46,8 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) count = 2 } - secondary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.getCasing(HTMachineType.CHEMICAL) } + secondary { +dustOrIngot(RagiumMaterial.Metal.GOLD) } + result { +RagiumItems.getParts(HTMachineType.CHEMICAL) } }.save(exporter) // Sooty Iron + Obsidian Dust -> Black Steel RagiumRecipeBuilders.alloying { @@ -237,16 +218,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture amount = 90 } }.save(exporter) - - // Sooty Iron -> Molten Steel - RagiumRecipeBuilders.melting { - ingredient { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } - result { - +RagiumFluids.MOLTEN_STEEL - amount = 90 - } - recipeId suffix "_from_sooty_iron" - }.save(exporter) } override fun getName(): String = "Heat Recipes" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 290dc1b715..5820fa8145 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -1,16 +1,16 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.color.HTColoredCollection -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections -import hiiragi283.lib.data.recipe.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType @@ -22,10 +22,13 @@ import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.common.Tags +import net.neoforged.neoforge.common.crafting.DifferenceIngredient import java.util.concurrent.CompletableFuture class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : @@ -40,6 +43,15 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } private fun assembling() { + // Blackstone + Gold -> Gilded Blackstone + RagiumRecipeBuilders.assembling { + primary { items { +Items.BLACKSTONE } } + secondary { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) + count = 8 + } + result { +Items.GILDED_BLACKSTONE } + }.save(exporter) // Dirt + Leaves -> Podzol RagiumRecipeBuilders.assembling { primary { items { +Items.DIRT } } @@ -172,11 +184,22 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable result { +Items.PIGLIN_HEAD } }.save(exporter) + // Gold Block + Apple -> Enchanted Golden Apple + RagiumRecipeBuilders.assembling { + primary { items { +Items.APPLE } } + secondary { + +holderSet(CommonTagPrefixes.STORAGE_BLOCK, RagiumMaterial.Metal.GOLD) + count = 8 + } + result { +Items.ENCHANTED_GOLDEN_APPLE } + time *= 8 + }.save(exporter) + // Machine Casing RagiumRecipeBuilders.assembling { - primary { items { +RagiumItems.getCasing(HTMachineType.MECHANICAL) } } + primary { items { +RagiumItems.getParts(HTMachineType.MECHANICAL) } } secondary { items { +Items.MAGMA_BLOCK } } - result { +RagiumItems.getCasing(HTMachineType.HEAT) } + result { +RagiumItems.getParts(HTMachineType.HEAT) } }.save(exporter) } @@ -249,7 +272,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // XX Carpet -> XX Wool - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { RagiumRecipeBuilders.compressing { ingredient { items { +VanillaColoredCollections.CARPET[color] } @@ -304,8 +327,9 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } private fun crushing() { - crushIntoDust() - crushOres() + crushMaterial() + crushWood() + crushOre() dyes() // XX Block -> XX @@ -371,7 +395,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - private fun crushIntoDust() { + private fun crushMaterial() { // XX Dust for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) @@ -390,7 +414,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS.get(HTItemPart.DUST, metal) ?: continue + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.INGOT, metal) } primary { +dust } @@ -398,11 +422,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(ItemTags.PLANKS) } - primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.WOOD) } - recipeId suffix "_from_planks" - }.save(exporter) RagiumRecipeBuilders.crushing { ingredient { +holderSet(Tags.Items.GLASS_BLOCKS) } primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.GLASS) } @@ -423,9 +442,73 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable ingredient { +holderSet(Tags.Items.OBSIDIANS_NORMAL) } primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.OBSIDIAN) } }.save(exporter) + // Gear -> Dust + for (material: RagiumMaterial in RagiumMaterial.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, material] ?: continue + if (RagiumItems.MATERIAL_ITEMS.contains(HTItemPart.GEAR, material)) { + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.GEAR, material) } + primary { + +dust + count = 4 + } + recipeId suffix "_from_gear" + }.save(exporter) + } + } + } + + private fun crushWood() { + val woodPulp: HTSimpleDeferredItem = RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.WOOD) + setOf( + Triple(ItemTags.PLANKS, 1, 1), + Triple(ItemTags.WOODEN_BUTTONS, 1, 1), + Triple(ItemTags.WOODEN_DOORS, 1, 2), + Triple(ItemTags.WOODEN_STAIRS, 2, 3), + Triple(ItemTags.WOODEN_SLABS, 2, 1), + Triple(ItemTags.WOODEN_PRESSURE_PLATES, 1, 2), + Triple(ItemTags.WOODEN_SHELVES, 1, 6), + Triple(ItemTags.LOGS, 1, 6), + Triple(ItemTags.WOODEN_TRAPDOORS, 3, 1), + Triple(ItemTags.SIGNS, 1, 2), + Triple(ItemTags.HANGING_SIGNS, 1, 6), + Triple(ItemTags.CHEST_BOATS, 1, 13), + Triple(Tags.Items.BARRELS_WOODEN, 1, 7), + Triple(Tags.Items.CHESTS_WOODEN, 1, 8), + Triple(Tags.Items.FENCE_GATES_WOODEN, 1, 4), + Triple(Tags.Items.FENCES_WOODEN, 1, 1), + Triple(Tags.Items.RODS_WOODEN, 2, 1), + Triple(CommonTagPrefixes.GEAR.itemTagKey(RagiumMaterial.Other.WOOD), 4, 1) + ).forEach { (input: TagKey, inputCount: Int, outputCount: Int) -> + RagiumRecipeBuilders.crushing { + ingredient { + +holderSet(input) + count = inputCount + } + primary { + +woodPulp + count = outputCount + } + recipeId suffix "_from_${input.location().debugPath}" + }.save(exporter) + } + + RagiumRecipeBuilders.crushing { + ingredient { + +DifferenceIngredient.of( + Ingredient.of(holderSet(ItemTags.BOATS)), + Ingredient.of(holderSet(ItemTags.CHEST_BOATS)) + ) + } + primary { + +woodPulp + count = 5 + } + recipeId suffix "_from_boats" + }.save(exporter) } - private fun crushOres() { + private fun crushOre() { // XX Ore -> XX Dust RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Fuel.COAL) } @@ -604,7 +687,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } } ) - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { val builder: HTItemIngredientBuilder.() -> Unit = single[color] ?: continue RagiumRecipeBuilders.crushing { ingredient(builder) @@ -685,7 +768,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable +RagiumFluids.HONEY amount = 250 } - recipeId replace "honey_from_bottle" + recipeId replace id("honey_from_bottle") }.save(exporter) // Wet Sponge -> Sponge + Water RagiumRecipeBuilders.draining { @@ -693,6 +776,14 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable itemResult { +Items.SPONGE } fluidResult { +Fluids.WATER } }.save(exporter) + + // Honeycomb -> Beeswax + Honey + RagiumRecipeBuilders.draining { + ingredient { items { +Items.HONEYCOMB } } + itemResult { +RagiumItems.BEESWAX } + fluidResult { +RagiumFluids.HONEY } + recipeId replace id("honey_from_comb") + }.save(exporter) } private fun filling() { @@ -716,7 +807,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // XX Concrete Powder + Water -> XX Concrete - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { RagiumRecipeBuilders.filling { itemIngredient { items { +VanillaColoredCollections.CONCRETE_POWDER[color] } } fluidIngredient { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index aeef16bffc..7e6595096a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -1,12 +1,12 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.HTComparators -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags @@ -38,6 +38,7 @@ import net.minecraft.data.recipes.SingleItemRecipeBuilder import net.minecraft.data.recipes.SmithingTransformRecipeBuilder import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.item.ToolMaterial import net.minecraft.world.item.crafting.CookingBookCategory @@ -79,7 +80,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec } ) - override fun getName(): String = "Vanilla Recipes 2" + override fun getName(): String = "Vanilla Recipes" } override fun buildRecipes() { @@ -148,6 +149,15 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec has(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.NITER) ) .save(output) + // Candle + shaped(RecipeCategory.DECORATIONS, Items.CANDLE) + .pattern("A") + .pattern("B") + .define('A', Tags.Items.STRINGS) + .define('B', RagiumItems.BEESWAX) + .unlockedBy(getHasName(Tags.Items.STRINGS), has(Tags.Items.STRINGS)) + .unlockedBy(getHasName(RagiumItems.BEESWAX), has(RagiumItems.BEESWAX)) + .save(output) // Bamboo Charcoal SimpleCookingRecipeBuilder.smelting( @@ -182,19 +192,37 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec ).unlockedBy(getHasName(HTCommonTags.Items.PLASTICS), has(HTCommonTags.Items.PLASTICS)) .save(output) } + // Splash Bottle + shapeless(RecipeCategory.BREWING, RagiumItems.SPLASH_BOTTLE, 4) + .requires(Tags.Items.GUNPOWDERS) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .unlockedBy(getHasName(Tags.Items.GUNPOWDERS), has(Tags.Items.GUNPOWDERS)) + .save(output) + // Lingering Bottle + shapeless(RecipeCategory.BREWING, RagiumItems.LINGERING_BOTTLE, 4) + .requires(Items.DRAGON_BREATH) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .unlockedBy(getHasName(Items.DRAGON_BREATH), has(Items.DRAGON_BREATH)) + .save(output) // XX Tools registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) // XX Dye Bucket - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { shapeless(RecipeCategory.MISC, RagiumFluids.DYES[color].bucketHolder) .requires(Tags.Items.BUCKETS_WATER) - .requires(color.dyesTag) - .requires(color.dyesTag) - .requires(color.dyesTag) - .requires(color.dyesTag) - .unlockedBy(getHasName(color.dyesTag), has(color.dyesTag)) + .requires(color.tag) + .requires(color.tag) + .requires(color.tag) + .requires(color.tag) + .unlockedBy(getHasName(color.tag), has(color.tag)) .save(output) } } @@ -220,7 +248,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec private fun machine() { // Mechanical - shaped(RecipeCategory.MISC, RagiumItems.getCasing(HTMachineType.MECHANICAL), 3) + shaped(RecipeCategory.MISC, RagiumItems.getParts(HTMachineType.MECHANICAL), 3) .pattern("AAA") .pattern("BBB") .pattern("AAA") @@ -249,6 +277,10 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec unlockedBy(getHasName(Items.STONECUTTER), has(Items.STONECUTTER)) } // Heat + heat(RagiumBlocks.ALLOY_SMELTER) { + define('D', Items.BLAST_FURNACE) + unlockedBy(getHasName(Items.BLAST_FURNACE), has(Items.BLAST_FURNACE)) + } heat(RagiumBlocks.FREEZER) { define('D', Tags.Items.BUCKETS_WATER) unlockedBy(getHasName(Tags.Items.BUCKETS_WATER), has(Tags.Items.BUCKETS_WATER)) @@ -257,6 +289,11 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec define('D', Tags.Items.BUCKETS_LAVA) unlockedBy(getHasName(Tags.Items.BUCKETS_LAVA), has(Tags.Items.BUCKETS_LAVA)) } + + heat(RagiumBlocks.SMELTER) { + define('D', Items.FURNACE) + unlockedBy(getHasName(Items.FURNACE), has(Items.FURNACE)) + } // Chemical chemical(RagiumBlocks.CHEMICAL_BATH) { define('D', Items.CAULDRON) @@ -269,6 +306,29 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec } // Electronics // Arcane + + // Decoration + shaped(RecipeCategory.DECORATIONS, RagiumBlocks.MACHINE_CASING, 4) + .pattern("ABA") + .pattern("B B") + .pattern("ABA") + .define('A', CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.SOOTY_IRON) + .define('B', CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + .unlockedBy( + getHasName(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON), + has(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + ) + .save(output) + + for (block: HTSimpleDeferredBlockAndItem in RagiumBlocks.MACHINE_CASINGS.values) { + SingleItemRecipeBuilder.stonecutting( + Ingredient.of(RagiumBlocks.MACHINE_CASING), + RecipeCategory.DECORATIONS, + block, + 1 + ).unlockedBy(getHasName(RagiumBlocks.MACHINE_CASING), has(RagiumBlocks.MACHINE_CASING)) + .save(output) + } } private inline fun machine( @@ -283,7 +343,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec .pattern("BCB") .pattern("ADA") .define('A', CommonTagPrefixes.NUGGET, material) - .define('B', RagiumItems.getCasing(machineType)) + .define('B', RagiumItems.getParts(machineType)) .define('C', CommonTagPrefixes.GEAR, gear) .apply(builderAction) .save(output) @@ -414,7 +474,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec 200 ).group(item.idOrThrow.path) .unlockedBy(getHasName(dust), has(dust)) - .saveSuffixed(output, "_from_smeting_dust") + .saveSuffixed(output, "_from_smelting_dust") SimpleCookingRecipeBuilder.blasting( Ingredient.of(dust), RecipeCategory.MISC, @@ -603,7 +663,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec fun tag(prefix: HTTagPrefix, material: HTMaterialLike): Ingredient = tag(prefix.itemTagKey(material)) - fun getHasName(tagKey: TagKey<*>): String = "has_${tagKey.location().path}" + fun getHasName(tagKey: TagKey<*>): String = "has_${tagKey.location().debugPath}" fun getHasName(prefix: HTTagPrefix, material: HTMaterialLike): String = getHasName(prefix.itemTagKey(material)) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index 57b5c950da..06a6e23dd2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -26,6 +26,9 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yieldAll(RagiumBlocks.MATERIAL_ORES.values) yieldAll(RagiumBlocks.STORAGE_BLOCKS.values) yieldAll(RagiumBlocks.MACHINES.values) + yieldAll(RagiumBlocks.MACHINE_CASINGS.values) + + yield(RagiumBlocks.MACHINE_CASING) }.forEach { pickaxe.add(it.block) } } } diff --git a/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json b/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json new file mode 100644 index 0000000000..657ac4afb1 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/heat" + }, + "facing=north,is_active=true": { + "model": "ragium:block/alloy_smelter" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json new file mode 100644 index 0000000000..3adf92fdb0 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/arcane_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/assembler.json b/src/generated/resources/assets/ragium/blockstates/assembler.json index 85e1da992c..71e1bbae06 100644 --- a/src/generated/resources/assets/ragium/blockstates/assembler.json +++ b/src/generated/resources/assets/ragium/blockstates/assembler.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/assembler" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/assembler_active" + "model": "ragium:block/assembler" }, "facing=south,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json new file mode 100644 index 0000000000..5b39643aa9 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/bio_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/brewery.json b/src/generated/resources/assets/ragium/blockstates/brewery.json index 4cba191bcb..ec8a090976 100644 --- a/src/generated/resources/assets/ragium/blockstates/brewery.json +++ b/src/generated/resources/assets/ragium/blockstates/brewery.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/brewery" + "model": "ragium:block/machine/bio" }, "facing=north,is_active=true": { - "model": "ragium:block/brewery_active" + "model": "ragium:block/brewery" }, "facing=south,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_bath.json b/src/generated/resources/assets/ragium/blockstates/chemical_bath.json index 3f2eac1920..4781b56adc 100644 --- a/src/generated/resources/assets/ragium/blockstates/chemical_bath.json +++ b/src/generated/resources/assets/ragium/blockstates/chemical_bath.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/chemical_bath" + "model": "ragium:block/machine/chemical" }, "facing=north,is_active=true": { - "model": "ragium:block/chemical_bath_active" + "model": "ragium:block/chemical_bath" }, "facing=south,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json new file mode 100644 index 0000000000..af6a23ef64 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/chemical_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json new file mode 100644 index 0000000000..f82d8c2938 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/chemical_reactor", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/chemical" + }, + "facing=north,is_active=true": { + "model": "ragium:block/chemical_reactor" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/chemical_reactor", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/compressor.json b/src/generated/resources/assets/ragium/blockstates/compressor.json index fdaadffcec..3e2d17ff2f 100644 --- a/src/generated/resources/assets/ragium/blockstates/compressor.json +++ b/src/generated/resources/assets/ragium/blockstates/compressor.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/compressor" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/compressor_active" + "model": "ragium:block/compressor" }, "facing=south,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/creative_battery.json b/src/generated/resources/assets/ragium/blockstates/creative_battery.json new file mode 100644 index 0000000000..dba945da4b --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/creative_battery.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/creative_battery" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/crusher.json b/src/generated/resources/assets/ragium/blockstates/crusher.json index fc0df2807c..23895cee19 100644 --- a/src/generated/resources/assets/ragium/blockstates/crusher.json +++ b/src/generated/resources/assets/ragium/blockstates/crusher.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/crusher" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/crusher_active" + "model": "ragium:block/crusher" }, "facing=south,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/cutting_machine.json b/src/generated/resources/assets/ragium/blockstates/cutting_machine.json index 2a2b51179b..4f13a6dfc3 100644 --- a/src/generated/resources/assets/ragium/blockstates/cutting_machine.json +++ b/src/generated/resources/assets/ragium/blockstates/cutting_machine.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/cutting_machine" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/cutting_machine_active" + "model": "ragium:block/cutting_machine" }, "facing=south,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json new file mode 100644 index 0000000000..48bc37471f --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/electrolyzer", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/chemical" + }, + "facing=north,is_active=true": { + "model": "ragium:block/electrolyzer" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/electrolyzer", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json new file mode 100644 index 0000000000..6d294b37b4 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/electronics_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/freezer.json b/src/generated/resources/assets/ragium/blockstates/freezer.json index d98e91baf9..d4c8248a23 100644 --- a/src/generated/resources/assets/ragium/blockstates/freezer.json +++ b/src/generated/resources/assets/ragium/blockstates/freezer.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/freezer" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/freezer_active" + "model": "ragium:block/freezer" }, "facing=south,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json new file mode 100644 index 0000000000..d11d6871ed --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/heat_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/machine_casing.json b/src/generated/resources/assets/ragium/blockstates/machine_casing.json new file mode 100644 index 0000000000..dcbd921bd1 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json new file mode 100644 index 0000000000..0f50a733d6 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/mechanical_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/melter.json b/src/generated/resources/assets/ragium/blockstates/melter.json index 3d216551b8..1bddece813 100644 --- a/src/generated/resources/assets/ragium/blockstates/melter.json +++ b/src/generated/resources/assets/ragium/blockstates/melter.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/melter" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/melter_active" + "model": "ragium:block/melter" }, "facing=south,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/mixer.json b/src/generated/resources/assets/ragium/blockstates/mixer.json new file mode 100644 index 0000000000..a677e2585e --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/mixer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/mixer", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/chemical" + }, + "facing=north,is_active=true": { + "model": "ragium:block/mixer" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/mixer", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/chemical", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/planter.json b/src/generated/resources/assets/ragium/blockstates/planter.json new file mode 100644 index 0000000000..0933e5ed3c --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/planter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/bio", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/planter", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/bio" + }, + "facing=north,is_active=true": { + "model": "ragium:block/planter" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/bio", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/planter", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/bio", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/planter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json new file mode 100644 index 0000000000..5313332881 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/pyrolyzer", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/heat" + }, + "facing=north,is_active=true": { + "model": "ragium:block/pyrolyzer" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/pyrolyzer", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/pyrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/refinery.json b/src/generated/resources/assets/ragium/blockstates/refinery.json new file mode 100644 index 0000000000..8a03549f55 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/refinery.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/refinery", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/heat" + }, + "facing=north,is_active=true": { + "model": "ragium:block/refinery" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/refinery", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/refinery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/scanner.json b/src/generated/resources/assets/ragium/blockstates/scanner.json new file mode 100644 index 0000000000..8395d77d1b --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/scanner.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/electronics", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/scanner", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/electronics" + }, + "facing=north,is_active=true": { + "model": "ragium:block/scanner" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/electronics", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/scanner", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/electronics", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smelter.json b/src/generated/resources/assets/ragium/blockstates/smelter.json new file mode 100644 index 0000000000..6eec035d7b --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smelter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/smelter", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/heat" + }, + "facing=north,is_active=true": { + "model": "ragium:block/smelter" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/smelter", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/alloy_smelter.json b/src/generated/resources/assets/ragium/items/alloy_smelter.json new file mode 100644 index 0000000000..795d77d78b --- /dev/null +++ b/src/generated/resources/assets/ragium/items/alloy_smelter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/alloy_smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/arcane_machine_casing.json b/src/generated/resources/assets/ragium/items/arcane_machine_casing.json index 8d8ee385eb..eb3138c648 100644 --- a/src/generated/resources/assets/ragium/items/arcane_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/arcane_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/arcane_machine_casing" + "model": "ragium:block/arcane_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/arcane_machine_parts.json b/src/generated/resources/assets/ragium/items/arcane_machine_parts.json new file mode 100644 index 0000000000..5887431158 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/arcane_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/arcane_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/beeswax.json b/src/generated/resources/assets/ragium/items/beeswax.json new file mode 100644 index 0000000000..dac9f76eac --- /dev/null +++ b/src/generated/resources/assets/ragium/items/beeswax.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/beeswax" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/bio_machine_casing.json b/src/generated/resources/assets/ragium/items/bio_machine_casing.json index af3bc42707..92a8923fe6 100644 --- a/src/generated/resources/assets/ragium/items/bio_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/bio_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/bio_machine_casing" + "model": "ragium:block/bio_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/bio_machine_parts.json b/src/generated/resources/assets/ragium/items/bio_machine_parts.json new file mode 100644 index 0000000000..e296f13761 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/bio_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/bio_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/molten_steel_bucket.json b/src/generated/resources/assets/ragium/items/bleach_bucket.json similarity index 68% rename from src/generated/resources/assets/ragium/items/molten_steel_bucket.json rename to src/generated/resources/assets/ragium/items/bleach_bucket.json index e48f25aeb9..1611f445a5 100644 --- a/src/generated/resources/assets/ragium/items/molten_steel_bucket.json +++ b/src/generated/resources/assets/ragium/items/bleach_bucket.json @@ -2,10 +2,10 @@ "model": { "type": "neoforge:fluid_container", "apply_fluid_luminosity": false, - "fluid": "ragium:molten_steel", + "fluid": "ragium:bleach", "textures": { "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid_drip", + "fluid": "neoforge:item/mask/bucket_fluid", "particle": "minecraft:item/bucket" } } diff --git a/src/generated/resources/assets/ragium/items/chemical_machine_casing.json b/src/generated/resources/assets/ragium/items/chemical_machine_casing.json index b7bfa16a0c..d0ec51bf6c 100644 --- a/src/generated/resources/assets/ragium/items/chemical_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/chemical_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/chemical_machine_casing" + "model": "ragium:block/chemical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/chemical_machine_parts.json b/src/generated/resources/assets/ragium/items/chemical_machine_parts.json new file mode 100644 index 0000000000..b85308e5d0 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/chemical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/chemical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/chemical_reactor.json b/src/generated/resources/assets/ragium/items/chemical_reactor.json new file mode 100644 index 0000000000..36c18464c6 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/chemical_reactor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/chemical_reactor" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/creative_battery.json b/src/generated/resources/assets/ragium/items/creative_battery.json new file mode 100644 index 0000000000..1810dcdb4f --- /dev/null +++ b/src/generated/resources/assets/ragium/items/creative_battery.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/creative_battery" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electrolyzer.json b/src/generated/resources/assets/ragium/items/electrolyzer.json new file mode 100644 index 0000000000..ef493c853d --- /dev/null +++ b/src/generated/resources/assets/ragium/items/electrolyzer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/electrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electronics_machine_casing.json b/src/generated/resources/assets/ragium/items/electronics_machine_casing.json index 58b8da806c..1dcb475f13 100644 --- a/src/generated/resources/assets/ragium/items/electronics_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/electronics_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/electronics_machine_casing" + "model": "ragium:block/electronics_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electronics_machine_parts.json b/src/generated/resources/assets/ragium/items/electronics_machine_parts.json new file mode 100644 index 0000000000..813fe4ec84 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/electronics_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/electronics_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/heat_machine_casing.json b/src/generated/resources/assets/ragium/items/heat_machine_casing.json index 14d0762ef4..60b665ede0 100644 --- a/src/generated/resources/assets/ragium/items/heat_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/heat_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/heat_machine_casing" + "model": "ragium:block/heat_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/heat_machine_parts.json b/src/generated/resources/assets/ragium/items/heat_machine_parts.json new file mode 100644 index 0000000000..bc3128d175 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/heat_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/heat_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/lingering_bottle.json b/src/generated/resources/assets/ragium/items/lingering_bottle.json new file mode 100644 index 0000000000..9c0773e117 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/lingering_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/lingering_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/machine_casing.json b/src/generated/resources/assets/ragium/items/machine_casing.json new file mode 100644 index 0000000000..7ad55074fb --- /dev/null +++ b/src/generated/resources/assets/ragium/items/machine_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json index 1097ce2e46..79ed97bf45 100644 --- a/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/mechanical_machine_casing" + "model": "ragium:block/mechanical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json b/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json new file mode 100644 index 0000000000..a43f8af80d --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/mechanical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mixer.json b/src/generated/resources/assets/ragium/items/mixer.json new file mode 100644 index 0000000000..0cf738ab89 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mixer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/mixer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json b/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json index f3a0f88051..2ba314b923 100644 --- a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json +++ b/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json @@ -5,7 +5,7 @@ "fluid": "ragium:ore_slurry", "textures": { "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid", + "fluid": "neoforge:item/mask/bucket_fluid_drip", "particle": "minecraft:item/bucket" } } diff --git a/src/generated/resources/assets/ragium/items/planter.json b/src/generated/resources/assets/ragium/items/planter.json new file mode 100644 index 0000000000..658fed0171 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/planter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/planter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/pyrolyzer.json b/src/generated/resources/assets/ragium/items/pyrolyzer.json new file mode 100644 index 0000000000..b7d358cd91 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/pyrolyzer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/pyrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/refinery.json b/src/generated/resources/assets/ragium/items/refinery.json new file mode 100644 index 0000000000..c593b05258 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/refinery.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/refinery" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/scanner.json b/src/generated/resources/assets/ragium/items/scanner.json new file mode 100644 index 0000000000..acaa85f7aa --- /dev/null +++ b/src/generated/resources/assets/ragium/items/scanner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/scanner" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smelter.json b/src/generated/resources/assets/ragium/items/smelter.json new file mode 100644 index 0000000000..3d65ed2fed --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smelter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/splash_bottle.json b/src/generated/resources/assets/ragium/items/splash_bottle.json new file mode 100644 index 0000000000..5545ee248d --- /dev/null +++ b/src/generated/resources/assets/ragium/items/splash_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/splash_bottle" + } +} \ 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 bd08911941..3115df6f99 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -7,30 +7,37 @@ "advancement.ragium.crusher.title": "Macerator, Pulverizer, or Crusher?", "advancement.ragium.freezer.desc": "Acquire Freezer", "advancement.ragium.freezer.title": "My power is 530,000.", - "advancement.ragium.heat_machine_casing.desc": "Craft a Machine Casing (Heat)", - "advancement.ragium.heat_machine_casing.title": "Heat And Cool", - "advancement.ragium.mechanical_machine_casing.desc": "Craft a Machine Casing (Mechanical)", - "advancement.ragium.mechanical_machine_casing.title": "Mechanical Machines", + "advancement.ragium.heat_machine_parts.desc": "Craft a Machine Casing (Heat)", + "advancement.ragium.heat_machine_parts.title": "Heat And Cool", + "advancement.ragium.mechanical_machine_parts.desc": "Craft a Machine Casing (Mechanical)", + "advancement.ragium.mechanical_machine_parts.title": "Mechanical Machines", "advancement.ragium.melter.desc": "Acquire Melter", "advancement.ragium.melter.title": "(S)melter(y)", "advancement.ragium.root.desc": "Welcome to Ragium!", "advancement.ragium.root.title": "Ragium", "advancement.ragium.sooty_iron.desc": "Craft a Sooty Iron Ingot", "advancement.ragium.sooty_iron.title": "Acquire Blackware", + "block.ragium.alloy_smelter": "Alloy Smelter", "block.ragium.anti_rust_oil": "Anti-rust Oil", + "block.ragium.arcane_machine_casing": "Machine Casing (Arcane)", "block.ragium.aromatic_compound": "Aromatic Compound", "block.ragium.assembler": "Assembler", + "block.ragium.bio_machine_casing": "Machine Casing (Bio)", "block.ragium.black_dye": "Black Dye", "block.ragium.black_steel_block": "Block of Black Steel", + "block.ragium.bleach": "Bleach", "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", + "block.ragium.chemical_machine_casing": "Machine Casing (Chemical)", + "block.ragium.chemical_reactor": "Chemical Reactor", "block.ragium.chloride": "Chlorine", "block.ragium.coal_coke_block": "Block of Coal Coke", "block.ragium.coal_tar": "Coal Tar", "block.ragium.compressor": "Compressor", + "block.ragium.creative_battery": "Creative Battery", "block.ragium.crude_oil": "Crude Oil", "block.ragium.crusher": "Crusher", "block.ragium.cutting_machine": "Cutting Machine", @@ -38,10 +45,13 @@ "block.ragium.deepslate_niter_ore": "Deepslate Niter Ore", "block.ragium.deepslate_sulfur_ore": "Deepslate Sulfur Ore", "block.ragium.echo_block": "Block of Echo", + "block.ragium.electrolyzer": "Electrolyzer", + "block.ragium.electronics_machine_casing": "Machine Casing (Electronics)", "block.ragium.freezer": "Freezer", "block.ragium.fuel": "Fuel", "block.ragium.gray_dye": "Gray Dye", "block.ragium.green_dye": "Green Dye", + "block.ragium.heat_machine_casing": "Machine Casing (Heat)", "block.ragium.honey": "Honey", "block.ragium.hydrochloric_acid": "Hydrochloric Acid", "block.ragium.hydrogen": "Hydrogen", @@ -50,13 +60,15 @@ "block.ragium.light_gray_dye": "Light Gray Dye", "block.ragium.lime_dye": "Lime Dye", "block.ragium.liquid_explosive": "Liquid Explosive", + "block.ragium.machine_casing": "Machine Casing", "block.ragium.magenta_dye": "Magenta Dye", + "block.ragium.mechanical_machine_casing": "Machine Casing (Mechanical)", "block.ragium.melter": "Melter", + "block.ragium.mixer": "Mixer", "block.ragium.molten_ender": "Resonant Ender", "block.ragium.molten_glass": "Molten Glass", "block.ragium.molten_glowstone": "Energized Glowstone", "block.ragium.molten_redstone": "Destabilized Redstone", - "block.ragium.molten_steel": "Molten Steel", "block.ragium.naphtha": "Naphtha", "block.ragium.nether_niter_ore": "Nether Niter Ore", "block.ragium.nether_sulfur_ore": "Nether Sulfur Ore", @@ -67,9 +79,13 @@ "block.ragium.ore_slurry": "Invalid Ore Slurry", "block.ragium.oxygen": "Oxygen", "block.ragium.pink_dye": "Pink Dye", - "block.ragium.potion": "Invalid Potion", + "block.ragium.planter": "Planter", "block.ragium.purple_dye": "Purple Dye", + "block.ragium.pyrolyzer": "Pyrolyzer", "block.ragium.red_dye": "Red Dye", + "block.ragium.refinery": "Refinery", + "block.ragium.scanner": "Laser Scanner", + "block.ragium.smelter": "Smelter", "block.ragium.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "block.ragium.sooty_iron_block": "Block of Sooty Iron", "block.ragium.sulfur_dioxide": "Sulfur Dioxide", @@ -133,18 +149,20 @@ "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", "item.ragium.amethyst_dust": "Amethyst Dust", "item.ragium.anti_rust_oil_bucket": "Anti-rust Oil Bucket", - "item.ragium.arcane_machine_casing": "Machine Casing (Arcane)", + "item.ragium.arcane_machine_parts": "Machine Parts (Arcane)", "item.ragium.aromatic_compound_bucket": "Aromatic Compound Bucket", "item.ragium.bamboo_charcoal": "Bamboo Charcoal", - "item.ragium.bio_machine_casing": "Machine Casing (Bio)", + "item.ragium.beeswax": "Beeswax", + "item.ragium.bio_machine_parts": "Machine Parts (Bio)", "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.bleach_bucket": "Bleach Bucket", "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", "item.ragium.charcoal_dust": "Charcoal Dust", - "item.ragium.chemical_machine_casing": "Machine Casing (Chemical)", + "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chloride_bucket": "Chlorine Bucket", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_coke_dust": "Coal Coke Dust", @@ -158,7 +176,7 @@ "item.ragium.diamond_gear": "Diamond Gear", "item.ragium.echo_dust": "Echo Dust", "item.ragium.elder_heart": "Elder Heart", - "item.ragium.electronics_machine_casing": "Machine Casing (Electronics)", + "item.ragium.electronics_machine_parts": "Machine Parts (Electronics)", "item.ragium.emerald_dust": "Emerald Dust", "item.ragium.emerald_gear": "Emerald Gear", "item.ragium.fuel_bucket": "Fuel Bucket", @@ -167,7 +185,7 @@ "item.ragium.gold_gear": "Gold Gear", "item.ragium.gray_dye_bucket": "Gray Dye Bucket", "item.ragium.green_dye_bucket": "Green Dye Bucket", - "item.ragium.heat_machine_casing": "Machine Casing (Heat)", + "item.ragium.heat_machine_parts": "Machine Parts (Heat)", "item.ragium.honey_bucket": "Honey Bucket", "item.ragium.hydrochloric_acid_bucket": "Hydrochloric Acid Bucket", "item.ragium.hydrogen_bucket": "Hydrogen Bucket", @@ -178,15 +196,15 @@ "item.ragium.light_blue_dye_bucket": "Light Blue Dye Bucket", "item.ragium.light_gray_dye_bucket": "Light Gray Dye Bucket", "item.ragium.lime_dye_bucket": "Lime Dye Bucket", + "item.ragium.lingering_bottle": "Lingering Bottle", "item.ragium.liquid_explosive_bucket": "Liquid Explosive Bucket", "item.ragium.magenta_dye_bucket": "Magenta Dye Bucket", - "item.ragium.mechanical_machine_casing": "Machine Casing (Mechanical)", + "item.ragium.mechanical_machine_parts": "Machine Parts (Mechanical)", "item.ragium.memory_disc": "Memory Disc", "item.ragium.molten_ender_bucket": "Resonant Ender Bucket", "item.ragium.molten_glass_bucket": "Molten Glass Bucket", "item.ragium.molten_glowstone_bucket": "Energized Glowstone Bucket", "item.ragium.molten_redstone_bucket": "Destabilized Redstone Bucket", - "item.ragium.molten_steel_bucket": "Molten Steel Bucket", "item.ragium.naphtha_bucket": "Naphtha Bucket", "item.ragium.netherite_dust": "Netherite Dust", "item.ragium.netherite_gear": "Netherite Gear", @@ -218,6 +236,7 @@ "item.ragium.sooty_iron_pickaxe": "Sooty Iron Pickaxe", "item.ragium.sooty_iron_shovel": "Sooty Iron Shovel", "item.ragium.sooty_iron_sword": "Sooty Iron Sword", + "item.ragium.splash_bottle": "Splash Bottle", "item.ragium.sulfur_dioxide_bucket": "Sulfur Dioxide Bucket", "item.ragium.sulfur_dust": "Sulfur Dust", "item.ragium.sulfur_trioxide_bucket": "Sulfur Trioxide Bucket", @@ -250,6 +269,7 @@ "recipe_type.ragium.cutting": "Cutting", "recipe_type.ragium.draining": "Draining", "recipe_type.ragium.electrolyzing": "Electrolyzing", + "recipe_type.ragium.enchanting": "Enchanting", "recipe_type.ragium.filling": "Filling", "recipe_type.ragium.freezing": "Freezing", "recipe_type.ragium.melting": "Melting", @@ -260,6 +280,7 @@ "recipe_type.ragium.refining": "Refining", "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", + "tag.fluid.c.bleach": "Bleach", "tag.fluid.c.chloride": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", "tag.fluid.c.crude_oil": "Crude Oil", @@ -289,7 +310,6 @@ "tag.fluid.c.molten_glass": "Molten Glass", "tag.fluid.c.molten_glowstone": "Energized Glowstone", "tag.fluid.c.molten_redstone": "Destabilized Redstone", - "tag.fluid.c.molten_steel": "Molten Steel", "tag.fluid.c.naphtha": "Naphtha", "tag.fluid.c.nitric_acid": "Nitric Acid", "tag.fluid.c.ominous_flux": "Ominous Flux", @@ -301,6 +321,7 @@ "tag.fluid.c.wood_tar": "Wood Tar", "tag.item.c.buckets.anti_rust_oil": "Anti-rust Oil Bucket", "tag.item.c.buckets.aromatic_compound": "Aromatic Compound Bucket", + "tag.item.c.buckets.bleach": "Bleach Bucket", "tag.item.c.buckets.chloride": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", "tag.item.c.buckets.crude_oil": "Crude Oil Bucket", @@ -330,7 +351,6 @@ "tag.item.c.buckets.molten_glass": "Molten Glass Bucket", "tag.item.c.buckets.molten_glowstone": "Energized Glowstone Bucket", "tag.item.c.buckets.molten_redstone": "Destabilized Redstone Bucket", - "tag.item.c.buckets.molten_steel": "Molten Steel Bucket", "tag.item.c.buckets.naphtha": "Naphtha Bucket", "tag.item.c.buckets.nitric_acid": "Nitric Acid Bucket", "tag.item.c.buckets.ominous_flux": "Ominous Flux Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 7f087bc4eb..5a3d699f30 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -7,30 +7,37 @@ "advancement.ragium.crusher.title": "Macerator, Pulverizer, or Crusher?", "advancement.ragium.freezer.desc": "冷凍機を手に入れる", "advancement.ragium.freezer.title": "私の消費電力は53万です", - "advancement.ragium.heat_machine_casing.desc": "マシンケーシング(熱)を作る", - "advancement.ragium.heat_machine_casing.title": "Heat And Cool", - "advancement.ragium.mechanical_machine_casing.desc": "マシンケーシング(機械加工)を作る", - "advancement.ragium.mechanical_machine_casing.title": "機械・加工・機械", + "advancement.ragium.heat_machine_parts.desc": "マシンケーシング(熱)を作る", + "advancement.ragium.heat_machine_parts.title": "Heat And Cool", + "advancement.ragium.mechanical_machine_parts.desc": "マシンケーシング(機械加工)を作る", + "advancement.ragium.mechanical_machine_parts.title": "機械・加工・機械", "advancement.ragium.melter.desc": "溶融炉を手に入れる", "advancement.ragium.melter.title": "融けてしまいそう", "advancement.ragium.root.desc": "ラギウムへようこそ!", "advancement.ragium.root.title": "ラギウム", "advancement.ragium.sooty_iron.desc": "煤鉄をつくる", "advancement.ragium.sooty_iron.title": "黒鉄(くろがね)を手に入れる", + "block.ragium.alloy_smelter": "合金炉", "block.ragium.anti_rust_oil": "防錆油", + "block.ragium.arcane_machine_casing": "機械筐体 (神秘)", "block.ragium.aromatic_compound": "芳香族化合物", "block.ragium.assembler": "組立機", + "block.ragium.bio_machine_casing": "機械筐体 (生体)", "block.ragium.black_dye": "黒色の染料", "block.ragium.black_steel_block": "黒鋼ブロック", + "block.ragium.bleach": "漂白剤", "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", "block.ragium.charcoal_block": "木炭ブロック", - "block.ragium.chemical_bath": "化学槽", + "block.ragium.chemical_bath": "化学浴槽", + "block.ragium.chemical_machine_casing": "機械筐体 (化学)", + "block.ragium.chemical_reactor": "化学反応槽", "block.ragium.chloride": "塩素", "block.ragium.coal_coke_block": "石炭コークスブロック", "block.ragium.coal_tar": "石炭タール", "block.ragium.compressor": "圧縮機", + "block.ragium.creative_battery": "クリエイティブ用バッテリー", "block.ragium.crude_oil": "原油", "block.ragium.crusher": "破砕機", "block.ragium.cutting_machine": "裁断機", @@ -38,10 +45,13 @@ "block.ragium.deepslate_niter_ore": "深層硝石鉱石", "block.ragium.deepslate_sulfur_ore": "深層硫黄鉱石", "block.ragium.echo_block": "残響ブロック", + "block.ragium.electrolyzer": "電解機", + "block.ragium.electronics_machine_casing": "機械筐体 (電子)", "block.ragium.freezer": "冷凍機", "block.ragium.fuel": "燃料油", "block.ragium.gray_dye": "灰色の染料", "block.ragium.green_dye": "緑色の染料", + "block.ragium.heat_machine_casing": "機械筐体 (熱)", "block.ragium.honey": "ハチミツ", "block.ragium.hydrochloric_acid": "塩酸", "block.ragium.hydrogen": "水素", @@ -50,13 +60,15 @@ "block.ragium.light_gray_dye": "薄灰色の染料", "block.ragium.lime_dye": "黄緑色の染料", "block.ragium.liquid_explosive": "液体爆薬", + "block.ragium.machine_casing": "機械ケーシング", "block.ragium.magenta_dye": "赤紫色の染料", + "block.ragium.mechanical_machine_casing": "機械筐体 (機械加工)", "block.ragium.melter": "溶融炉", + "block.ragium.mixer": "混合機", "block.ragium.molten_ender": "共振エンダー", "block.ragium.molten_glass": "溶融ガラス", "block.ragium.molten_glowstone": "活性グロウストーン", "block.ragium.molten_redstone": "励起レッドストーン", - "block.ragium.molten_steel": "溶融した鋼鉄", "block.ragium.naphtha": "ナフサ", "block.ragium.nether_niter_ore": "ネザー硝石鉱石", "block.ragium.nether_sulfur_ore": "ネザー硫黄鉱石", @@ -67,9 +79,13 @@ "block.ragium.ore_slurry": "無効な鉱石泥", "block.ragium.oxygen": "酸素", "block.ragium.pink_dye": "桃色の染料", - "block.ragium.potion": "無効なポーション", + "block.ragium.planter": "栽培機", "block.ragium.purple_dye": "紫色の染料", + "block.ragium.pyrolyzer": "熱分解炉", "block.ragium.red_dye": "赤色の染料", + "block.ragium.refinery": "精製機", + "block.ragium.scanner": "レーザースキャナ", + "block.ragium.smelter": "製錬炉", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "block.ragium.sooty_iron_block": "煤鉄ブロック", "block.ragium.sulfur_dioxide": "二酸化硫黄", @@ -133,18 +149,20 @@ "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", "item.ragium.amethyst_dust": "アメジストの粉", "item.ragium.anti_rust_oil_bucket": "防錆油入りバケツ", - "item.ragium.arcane_machine_casing": "マシンケーシング (神秘)", + "item.ragium.arcane_machine_parts": "機械部品 (神秘)", "item.ragium.aromatic_compound_bucket": "芳香族化合物入りバケツ", "item.ragium.bamboo_charcoal": "竹炭", - "item.ragium.bio_machine_casing": "マシンケーシング (生体)", + "item.ragium.beeswax": "密猟", + "item.ragium.bio_machine_parts": "機械部品 (生体)", "item.ragium.black_dye_bucket": "黒色の染料入りバケツ", "item.ragium.black_steel_ingot": "黒鋼インゴット", "item.ragium.black_steel_nugget": "黒鋼ナゲット", + "item.ragium.bleach_bucket": "漂白剤入りバケツ", "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", "item.ragium.charcoal_dust": "木炭の粉", - "item.ragium.chemical_machine_casing": "マシンケーシング (化学)", + "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chloride_bucket": "塩素入りバケツ", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_coke_dust": "石炭コークスの粉", @@ -158,7 +176,7 @@ "item.ragium.diamond_gear": "ダイヤモンドの歯車", "item.ragium.echo_dust": "残響の粉", "item.ragium.elder_heart": "エルダーの心臓", - "item.ragium.electronics_machine_casing": "マシンケーシング (電子)", + "item.ragium.electronics_machine_parts": "機械部品 (電子)", "item.ragium.emerald_dust": "エメラルドの粉", "item.ragium.emerald_gear": "エメラルドの歯車", "item.ragium.fuel_bucket": "燃料油入りバケツ", @@ -167,7 +185,7 @@ "item.ragium.gold_gear": "金の歯車", "item.ragium.gray_dye_bucket": "灰色の染料入りバケツ", "item.ragium.green_dye_bucket": "緑色の染料入りバケツ", - "item.ragium.heat_machine_casing": "マシンケーシング (熱)", + "item.ragium.heat_machine_parts": "機械部品 (熱)", "item.ragium.honey_bucket": "ハチミツ入りバケツ", "item.ragium.hydrochloric_acid_bucket": "塩酸入りバケツ", "item.ragium.hydrogen_bucket": "水素入りバケツ", @@ -178,15 +196,15 @@ "item.ragium.light_blue_dye_bucket": "空色の染料入りバケツ", "item.ragium.light_gray_dye_bucket": "薄灰色の染料入りバケツ", "item.ragium.lime_dye_bucket": "黄緑色の染料入りバケツ", + "item.ragium.lingering_bottle": "残留瓶", "item.ragium.liquid_explosive_bucket": "液体爆薬入りバケツ", "item.ragium.magenta_dye_bucket": "赤紫色の染料入りバケツ", - "item.ragium.mechanical_machine_casing": "マシンケーシング (機械加工)", + "item.ragium.mechanical_machine_parts": "機械部品 (機械加工)", "item.ragium.memory_disc": "メモリーディスク", "item.ragium.molten_ender_bucket": "共振エンダー入りバケツ", "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", "item.ragium.molten_glowstone_bucket": "活性グロウストーン入りバケツ", "item.ragium.molten_redstone_bucket": "励起レッドストーン入りバケツ", - "item.ragium.molten_steel_bucket": "溶融した鋼鉄入りバケツ", "item.ragium.naphtha_bucket": "ナフサ入りバケツ", "item.ragium.netherite_dust": "ネザライトの粉", "item.ragium.netherite_gear": "ネザライトの歯車", @@ -218,6 +236,7 @@ "item.ragium.sooty_iron_pickaxe": "煤鉄のツルハシ", "item.ragium.sooty_iron_shovel": "煤鉄のショベル", "item.ragium.sooty_iron_sword": "煤鉄の剣", + "item.ragium.splash_bottle": "スプラッシュ瓶", "item.ragium.sulfur_dioxide_bucket": "二酸化硫黄入りバケツ", "item.ragium.sulfur_dust": "硫黄の粉", "item.ragium.sulfur_trioxide_bucket": "三酸化硫黄入りバケツ", @@ -250,6 +269,7 @@ "recipe_type.ragium.cutting": "切断", "recipe_type.ragium.draining": "排出", "recipe_type.ragium.electrolyzing": "電気分解", + "recipe_type.ragium.enchanting": "エンチャント", "recipe_type.ragium.filling": "封入", "recipe_type.ragium.freezing": "冷凍", "recipe_type.ragium.melting": "溶融", @@ -260,6 +280,7 @@ "recipe_type.ragium.refining": "蒸留", "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", + "tag.fluid.c.bleach": "漂白剤", "tag.fluid.c.chloride": "塩素", "tag.fluid.c.coal_tar": "石炭タール", "tag.fluid.c.crude_oil": "原油", @@ -289,7 +310,6 @@ "tag.fluid.c.molten_glass": "溶融ガラス", "tag.fluid.c.molten_glowstone": "活性グロウストーン", "tag.fluid.c.molten_redstone": "励起レッドストーン", - "tag.fluid.c.molten_steel": "溶融した鋼鉄", "tag.fluid.c.naphtha": "ナフサ", "tag.fluid.c.nitric_acid": "硝酸", "tag.fluid.c.ominous_flux": "不吉な流動体", @@ -301,6 +321,7 @@ "tag.fluid.c.wood_tar": "木タール", "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", + "tag.item.c.buckets.bleach": "漂白剤入りバケツ", "tag.item.c.buckets.chloride": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", "tag.item.c.buckets.crude_oil": "原油入りバケツ", @@ -330,7 +351,6 @@ "tag.item.c.buckets.molten_glass": "溶融ガラス入りバケツ", "tag.item.c.buckets.molten_glowstone": "活性グロウストーン入りバケツ", "tag.item.c.buckets.molten_redstone": "励起レッドストーン入りバケツ", - "tag.item.c.buckets.molten_steel": "溶融した鋼鉄入りバケツ", "tag.item.c.buckets.naphtha": "ナフサ入りバケツ", "tag.item.c.buckets.nitric_acid": "硝酸入りバケツ", "tag.item.c.buckets.ominous_flux": "不吉な流動体入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/melter_active.json b/src/generated/resources/assets/ragium/models/block/alloy_smelter.json similarity index 52% rename from src/generated/resources/assets/ragium/models/block/melter_active.json rename to src/generated/resources/assets/ragium/models/block/alloy_smelter.json index 0d075dcef3..ae743ba331 100644 --- a/src/generated/resources/assets/ragium/models/block/melter_active.json +++ b/src/generated/resources/assets/ragium/models/block/alloy_smelter.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/melter_front_active", - "side": "ragium:block/machine_casing/heat", + "front": "ragium:block/alloy_smelter_front", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json new file mode 100644 index 0000000000..7f25955e2e --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/arcane_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/assembler.json b/src/generated/resources/assets/ragium/models/block/assembler.json index ec3cdd6e45..1894455429 100644 --- a/src/generated/resources/assets/ragium/models/block/assembler.json +++ b/src/generated/resources/assets/ragium/models/block/assembler.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/assembler_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json new file mode 100644 index 0000000000..3515a3ea66 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/bio_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/brewery.json b/src/generated/resources/assets/ragium/models/block/brewery.json index 76ad51a77a..7cc0e22b7f 100644 --- a/src/generated/resources/assets/ragium/models/block/brewery.json +++ b/src/generated/resources/assets/ragium/models/block/brewery.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/brewery_front", - "side": "ragium:block/machine_casing/bio", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_bath.json b/src/generated/resources/assets/ragium/models/block/chemical_bath.json index 8ed2eb96d6..a8b0a1306c 100644 --- a/src/generated/resources/assets/ragium/models/block/chemical_bath.json +++ b/src/generated/resources/assets/ragium/models/block/chemical_bath.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/chemical_bath_front", - "side": "ragium:block/machine_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json b/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json deleted file mode 100644 index 6e4a2ab687..0000000000 --- a/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/chemical_bath_front_active", - "side": "ragium:block/machine_casing/chemical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json new file mode 100644 index 0000000000..6dac2c91a7 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/chemical_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/crusher_active.json b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json similarity index 50% rename from src/generated/resources/assets/ragium/models/block/crusher_active.json rename to src/generated/resources/assets/ragium/models/block/chemical_reactor.json index d883c70fee..6e44b3c6ac 100644 --- a/src/generated/resources/assets/ragium/models/block/crusher_active.json +++ b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/crusher_front_active", - "side": "ragium:block/machine_casing/mechanical", + "front": "ragium:block/chemical_reactor_front", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/compressor.json b/src/generated/resources/assets/ragium/models/block/compressor.json index 5d588a623e..5dc1de7fc1 100644 --- a/src/generated/resources/assets/ragium/models/block/compressor.json +++ b/src/generated/resources/assets/ragium/models/block/compressor.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/compressor_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/compressor_active.json b/src/generated/resources/assets/ragium/models/block/compressor_active.json deleted file mode 100644 index fb0fae1a62..0000000000 --- a/src/generated/resources/assets/ragium/models/block/compressor_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/compressor_front_active", - "side": "ragium:block/machine_casing/mechanical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/creative_battery.json b/src/generated/resources/assets/ragium/models/block/creative_battery.json new file mode 100644 index 0000000000..1e6266c335 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/creative_battery.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/creative_battery" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/crusher.json b/src/generated/resources/assets/ragium/models/block/crusher.json index a452e1d662..d7b3585f9c 100644 --- a/src/generated/resources/assets/ragium/models/block/crusher.json +++ b/src/generated/resources/assets/ragium/models/block/crusher.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/crusher_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cutting_machine.json b/src/generated/resources/assets/ragium/models/block/cutting_machine.json index 8df900068c..da0bcf5aa1 100644 --- a/src/generated/resources/assets/ragium/models/block/cutting_machine.json +++ b/src/generated/resources/assets/ragium/models/block/cutting_machine.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/cutting_machine_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json b/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json deleted file mode 100644 index 34835952e9..0000000000 --- a/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/cutting_machine_front_active", - "side": "ragium:block/machine_casing/mechanical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/freezer_active.json b/src/generated/resources/assets/ragium/models/block/electrolyzer.json similarity index 51% rename from src/generated/resources/assets/ragium/models/block/freezer_active.json rename to src/generated/resources/assets/ragium/models/block/electrolyzer.json index 01f2e80809..871ea10fd4 100644 --- a/src/generated/resources/assets/ragium/models/block/freezer_active.json +++ b/src/generated/resources/assets/ragium/models/block/electrolyzer.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/freezer_front_active", - "side": "ragium:block/machine_casing/heat", + "front": "ragium:block/electrolyzer_front", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json new file mode 100644 index 0000000000..03e79c1afe --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/electronics_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/freezer.json b/src/generated/resources/assets/ragium/models/block/freezer.json index 6b3baf4778..960f9dbdcb 100644 --- a/src/generated/resources/assets/ragium/models/block/freezer.json +++ b/src/generated/resources/assets/ragium/models/block/freezer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/freezer_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json new file mode 100644 index 0000000000..bcbf5de3be --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine/arcane.json b/src/generated/resources/assets/ragium/models/block/machine/arcane.json new file mode 100644 index 0000000000..a294becbfc --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine/arcane.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/arcane_front", + "side": "ragium:block/machine/arcane_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/brewery_active.json b/src/generated/resources/assets/ragium/models/block/machine/bio.json similarity index 52% rename from src/generated/resources/assets/ragium/models/block/brewery_active.json rename to src/generated/resources/assets/ragium/models/block/machine/bio.json index 28750fdfe7..a1f708d0c6 100644 --- a/src/generated/resources/assets/ragium/models/block/brewery_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/bio.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/brewery_front_active", - "side": "ragium:block/machine_casing/bio", + "front": "ragium:block/machine/bio_front", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine/chemical.json b/src/generated/resources/assets/ragium/models/block/machine/chemical.json new file mode 100644 index 0000000000..fc256c3e7e --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine/chemical.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/chemical_front", + "side": "ragium:block/machine/chemical_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine/electronics.json b/src/generated/resources/assets/ragium/models/block/machine/electronics.json new file mode 100644 index 0000000000..ec021e4fbd --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine/electronics.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/electronics_front", + "side": "ragium:block/machine/electronics_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine/heat.json b/src/generated/resources/assets/ragium/models/block/machine/heat.json new file mode 100644 index 0000000000..8c24585a4f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine/heat.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/heat_front", + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/assembler_active.json b/src/generated/resources/assets/ragium/models/block/machine/mechanical.json similarity index 50% rename from src/generated/resources/assets/ragium/models/block/assembler_active.json rename to src/generated/resources/assets/ragium/models/block/machine/mechanical.json index 42df2dc6ec..5c45f9b328 100644 --- a/src/generated/resources/assets/ragium/models/block/assembler_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/mechanical.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/assembler_front_active", - "side": "ragium:block/machine_casing/mechanical", + "front": "ragium:block/machine/mechanical_front", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine_casing.json b/src/generated/resources/assets/ragium/models/block/machine_casing.json new file mode 100644 index 0000000000..a50e294042 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json new file mode 100644 index 0000000000..1a40da9c87 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine/mechanical_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/melter.json b/src/generated/resources/assets/ragium/models/block/melter.json index 0c4e61e315..bf98e1800a 100644 --- a/src/generated/resources/assets/ragium/models/block/melter.json +++ b/src/generated/resources/assets/ragium/models/block/melter.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/melter_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mixer.json b/src/generated/resources/assets/ragium/models/block/mixer.json new file mode 100644 index 0000000000..3c41f416d5 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/mixer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/mixer_front", + "side": "ragium:block/machine/chemical_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/planter.json b/src/generated/resources/assets/ragium/models/block/planter.json new file mode 100644 index 0000000000..42eec88a17 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/planter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/planter_front", + "side": "ragium:block/machine/bio_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/pyrolyzer.json b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json new file mode 100644 index 0000000000..591b37ca62 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/pyrolyzer_front", + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/refinery.json b/src/generated/resources/assets/ragium/models/block/refinery.json new file mode 100644 index 0000000000..fa4fe7ca35 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/refinery.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/refinery_front", + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/scanner.json b/src/generated/resources/assets/ragium/models/block/scanner.json new file mode 100644 index 0000000000..923b3781a3 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/scanner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/scanner_front", + "side": "ragium:block/machine/electronics_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smelter.json b/src/generated/resources/assets/ragium/models/block/smelter.json new file mode 100644 index 0000000000..c287b69a47 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smelter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/smelter_front", + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json b/src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json index 7da3dbeb67..defa500d4a 100644 --- a/src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/arcane" + "layer0": "ragium:item/parts/arcane" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/bio_machine_casing.json b/src/generated/resources/assets/ragium/models/item/beeswax.json similarity index 61% rename from src/generated/resources/assets/ragium/models/item/bio_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/beeswax.json index 4d4480a590..5ff5a69229 100644 --- a/src/generated/resources/assets/ragium/models/item/bio_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/beeswax.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/bio" + "layer0": "ragium:item/beeswax" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/heat_machine_casing.json b/src/generated/resources/assets/ragium/models/item/bio_machine_parts.json similarity index 61% rename from src/generated/resources/assets/ragium/models/item/heat_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/bio_machine_parts.json index b6394e8d36..f8696956f4 100644 --- a/src/generated/resources/assets/ragium/models/item/heat_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/bio_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/heat" + "layer0": "ragium:item/parts/bio" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json b/src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json similarity index 58% rename from src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json index 2f32be0c9e..b3ae7132d0 100644 --- a/src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/chemical" + "layer0": "ragium:item/parts/chemical" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json b/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json new file mode 100644 index 0000000000..bc4bffbd8e --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/parts/electronics" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/heat_machine_parts.json b/src/generated/resources/assets/ragium/models/item/heat_machine_parts.json new file mode 100644 index 0000000000..670e20297c --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/heat_machine_parts.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/parts/heat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json b/src/generated/resources/assets/ragium/models/item/lingering_bottle.json similarity index 56% rename from src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/lingering_bottle.json index 9b37b9e398..5a23bd136d 100644 --- a/src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/lingering_bottle.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/electronics" + "layer0": "minecraft:item/lingering_potion" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json deleted file mode 100644 index e31ea91001..0000000000 --- a/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/casing/mechanical" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json b/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json new file mode 100644 index 0000000000..3941b58b26 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/parts/mechanical" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/splash_bottle.json b/src/generated/resources/assets/ragium/models/item/splash_bottle.json new file mode 100644 index 0000000000..47b6698e0c --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/splash_bottle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/splash_potion" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/bleach.json b/src/generated/resources/data/c/tags/fluid/bleach.json new file mode 100644 index 0000000000..4760714f9b --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/bleach.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:bleach" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/molten_steel.json b/src/generated/resources/data/c/tags/fluid/molten_steel.json deleted file mode 100644 index a1f59de310..0000000000 --- a/src/generated/resources/data/c/tags/fluid/molten_steel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:molten_steel" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 1e041714a7..187a939ef9 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -2,6 +2,7 @@ "values": [ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", + "#c:buckets/bleach", "#c:buckets/chloride", "#c:buckets/coal_tar", "#c:buckets/crude_oil", @@ -31,7 +32,6 @@ "#c:buckets/molten_glass", "#c:buckets/molten_glowstone", "#c:buckets/molten_redstone", - "#c:buckets/molten_steel", "#c:buckets/naphtha", "#c:buckets/nitric_acid", "#c:buckets/ominous_flux", diff --git a/src/generated/resources/data/c/tags/item/buckets/bleach.json b/src/generated/resources/data/c/tags/item/buckets/bleach.json new file mode 100644 index 0000000000..831b1876b4 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/bleach.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:bleach_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/molten_steel.json b/src/generated/resources/data/c/tags/item/buckets/molten_steel.json deleted file mode 100644 index 606c58e5aa..0000000000 --- a/src/generated/resources/data/c/tags/item/buckets/molten_steel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:molten_steel_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index fa7dd2b4e4..83152fc7d3 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1,10 +1,15 @@ { "values": [ + "ragium:alloy_smelter", + "ragium:arcane_machine_casing", "ragium:assembler", + "ragium:bio_machine_casing", "ragium:black_steel_block", "ragium:brewery", "ragium:charcoal_block", "ragium:chemical_bath", + "ragium:chemical_machine_casing", + "ragium:chemical_reactor", "ragium:coal_coke_block", "ragium:compressor", "ragium:crusher", @@ -12,11 +17,22 @@ "ragium:deepslate_niter_ore", "ragium:deepslate_sulfur_ore", "ragium:echo_block", + "ragium:electrolyzer", + "ragium:electronics_machine_casing", "ragium:freezer", + "ragium:heat_machine_casing", + "ragium:machine_casing", + "ragium:mechanical_machine_casing", "ragium:melter", + "ragium:mixer", "ragium:nether_niter_ore", "ragium:nether_sulfur_ore", "ragium:niter_ore", + "ragium:planter", + "ragium:pyrolyzer", + "ragium:refinery", + "ragium:scanner", + "ragium:smelter", "ragium:sooty_iron_block", "ragium:sulfur_ore", "ragium:void_metal_block" diff --git a/src/generated/resources/data/ragium/advancement/alloy_smelter.json b/src/generated/resources/data/ragium/advancement/alloy_smelter.json index 570344dcdc..1480a3df09 100644 --- a/src/generated/resources/data/ragium/advancement/alloy_smelter.json +++ b/src/generated/resources/data/ragium/advancement/alloy_smelter.json @@ -1,11 +1,11 @@ { - "parent": "ragium:heat_machine_casing", + "parent": "ragium:heat_machine_parts", "criteria": { - "has_freezer": { + "has_alloy_smelter": { "conditions": { "items": [ { - "items": "ragium:freezer" + "items": "ragium:alloy_smelter" } ] }, @@ -17,7 +17,7 @@ "translate": "advancement.ragium.alloy_smelter.desc" }, "icon": { - "id": "ragium:freezer" + "id": "ragium:alloy_smelter" }, "title": { "translate": "advancement.ragium.alloy_smelter.title" @@ -25,7 +25,7 @@ }, "requirements": [ [ - "has_freezer" + "has_alloy_smelter" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/assembler.json b/src/generated/resources/data/ragium/advancement/assembler.json index d7162bba50..87cd722952 100644 --- a/src/generated/resources/data/ragium/advancement/assembler.json +++ b/src/generated/resources/data/ragium/advancement/assembler.json @@ -1,5 +1,5 @@ { - "parent": "ragium:mechanical_machine_casing", + "parent": "ragium:mechanical_machine_parts", "criteria": { "has_assembler": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/chemical_bath.json b/src/generated/resources/data/ragium/advancement/chemical_bath.json index 45f7d634e3..f20cfc54ac 100644 --- a/src/generated/resources/data/ragium/advancement/chemical_bath.json +++ b/src/generated/resources/data/ragium/advancement/chemical_bath.json @@ -1,5 +1,5 @@ { - "parent": "ragium:chemical_machine_casing", + "parent": "ragium:chemical_machine_parts", "criteria": { "has_chemical_bath": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json b/src/generated/resources/data/ragium/advancement/chemical_machine_parts.json similarity index 54% rename from src/generated/resources/data/ragium/advancement/chemical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/chemical_machine_parts.json index a2638d727b..98771fd4c0 100644 --- a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/chemical_machine_parts.json @@ -1,11 +1,11 @@ { "parent": "ragium:black_steel", "criteria": { - "has_chemical_machine_casing": { + "has_chemical_machine_parts": { "conditions": { "items": [ { - "items": "ragium:chemical_machine_casing" + "items": "ragium:chemical_machine_parts" } ] }, @@ -14,19 +14,19 @@ }, "display": { "description": { - "translate": "advancement.ragium.chemical_machine_casing.desc" + "translate": "advancement.ragium.chemical_machine_parts.desc" }, "frame": "goal", "icon": { - "id": "ragium:chemical_machine_casing" + "id": "ragium:chemical_machine_parts" }, "title": { - "translate": "advancement.ragium.chemical_machine_casing.title" + "translate": "advancement.ragium.chemical_machine_parts.title" } }, "requirements": [ [ - "has_chemical_machine_casing" + "has_chemical_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/crusher.json b/src/generated/resources/data/ragium/advancement/crusher.json index 6f95230fb0..6f0e9437e1 100644 --- a/src/generated/resources/data/ragium/advancement/crusher.json +++ b/src/generated/resources/data/ragium/advancement/crusher.json @@ -1,5 +1,5 @@ { - "parent": "ragium:mechanical_machine_casing", + "parent": "ragium:mechanical_machine_parts", "criteria": { "has_crusher": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/freezer.json b/src/generated/resources/data/ragium/advancement/freezer.json index e9db84b021..1b1e7f084b 100644 --- a/src/generated/resources/data/ragium/advancement/freezer.json +++ b/src/generated/resources/data/ragium/advancement/freezer.json @@ -1,5 +1,5 @@ { - "parent": "ragium:heat_machine_casing", + "parent": "ragium:heat_machine_parts", "criteria": { "has_freezer": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json b/src/generated/resources/data/ragium/advancement/heat_machine_parts.json similarity index 56% rename from src/generated/resources/data/ragium/advancement/heat_machine_casing.json rename to src/generated/resources/data/ragium/advancement/heat_machine_parts.json index 45faf046d4..4a948b7aed 100644 --- a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/heat_machine_parts.json @@ -1,11 +1,11 @@ { "parent": "ragium:assembler", "criteria": { - "has_heat_machine_casing": { + "has_heat_machine_parts": { "conditions": { "items": [ { - "items": "ragium:heat_machine_casing" + "items": "ragium:heat_machine_parts" } ] }, @@ -14,19 +14,19 @@ }, "display": { "description": { - "translate": "advancement.ragium.heat_machine_casing.desc" + "translate": "advancement.ragium.heat_machine_parts.desc" }, "frame": "goal", "icon": { - "id": "ragium:heat_machine_casing" + "id": "ragium:heat_machine_parts" }, "title": { - "translate": "advancement.ragium.heat_machine_casing.title" + "translate": "advancement.ragium.heat_machine_parts.title" } }, "requirements": [ [ - "has_heat_machine_casing" + "has_heat_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json similarity index 53% rename from src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json index f217772182..1809bd6694 100644 --- a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json @@ -1,11 +1,11 @@ { "parent": "ragium:sooty_iron", "criteria": { - "has_mechanical_machine_casing": { + "has_mechanical_machine_parts": { "conditions": { "items": [ { - "items": "ragium:mechanical_machine_casing" + "items": "ragium:mechanical_machine_parts" } ] }, @@ -14,19 +14,19 @@ }, "display": { "description": { - "translate": "advancement.ragium.mechanical_machine_casing.desc" + "translate": "advancement.ragium.mechanical_machine_parts.desc" }, "frame": "goal", "icon": { - "id": "ragium:mechanical_machine_casing" + "id": "ragium:mechanical_machine_parts" }, "title": { - "translate": "advancement.ragium.mechanical_machine_casing.title" + "translate": "advancement.ragium.mechanical_machine_parts.title" } }, "requirements": [ [ - "has_mechanical_machine_casing" + "has_mechanical_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/melter.json b/src/generated/resources/data/ragium/advancement/melter.json index a137e53d8b..721f1d56df 100644 --- a/src/generated/resources/data/ragium/advancement/melter.json +++ b/src/generated/resources/data/ragium/advancement/melter.json @@ -1,5 +1,5 @@ { - "parent": "ragium:heat_machine_casing", + "parent": "ragium:heat_machine_parts", "criteria": { "has_melter": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json b/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json new file mode 100644 index 0000000000..af175283dc --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_dragon_breath": { + "conditions": { + "items": [ + { + "items": "minecraft:dragon_breath" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:lingering_bottle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dragon_breath" + ] + ], + "rewards": { + "recipes": [ + "ragium:lingering_bottle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json b/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json new file mode 100644 index 0000000000..43462c9f2b --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_gunpowders": { + "conditions": { + "items": [ + { + "items": "#c:gunpowders" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:splash_bottle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_gunpowders" + ] + ], + "rewards": { + "recipes": [ + "ragium:splash_bottle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json index 4e5217b4f1..b387ef8246 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/black_steel": { + "has_ingots_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/black_steel" + "has_ingots_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json index 05f944ad02..979d259e44 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/echo": { + "has_gems_echo": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/echo" + "has_gems_echo" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json index 0e965e2c3a..b3c29abbb0 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json index f19de50ae8..e588bd61e2 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/void_metal": { + "has_ingots_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/void_metal" + "has_ingots_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json new file mode 100644 index 0000000000..2f1e0edc21 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:arcane_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:arcane_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json new file mode 100644 index 0000000000..fea86fb603 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:bio_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:bio_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json new file mode 100644 index 0000000000..ffb69fd488 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_beeswax": { + "conditions": { + "items": [ + { + "items": "ragium:beeswax" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_strings": { + "conditions": { + "items": [ + { + "items": "#c:strings" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:candle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_strings", + "has_beeswax" + ] + ], + "rewards": { + "recipes": [ + "minecraft:candle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json new file mode 100644 index 0000000000..a056391346 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:chemical_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:chemical_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json new file mode 100644 index 0000000000..607d6ebd40 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:electronics_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:electronics_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json new file mode 100644 index 0000000000..99c93537db --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:heat_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:heat_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json new file mode 100644 index 0000000000..7e24020514 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_ingots_sooty_iron": { + "conditions": { + "items": [ + { + "items": "#c:ingots/sooty_iron" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_ingots_sooty_iron" + ] + ], + "rewards": { + "recipes": [ + "ragium:machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json similarity index 82% rename from src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json index d798bd5629..5ac89f71b0 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json @@ -1,11 +1,11 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_machine_casing": { "conditions": { "items": [ { - "items": "#c:ingots/sooty_iron" + "items": "ragium:machine_casing" } ] }, @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_machine_casing" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json new file mode 100644 index 0000000000..98fa4cde6e --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_blast_furnace": { + "conditions": { + "items": [ + { + "items": "minecraft:blast_furnace" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:alloy_smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_blast_furnace" + ] + ], + "rewards": { + "recipes": [ + "ragium:alloy_smelter" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json index b0c87324ce..2306419c33 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/black": { + "has_dyes_black": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/black" + "has_dyes_black" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json index f13ca4cab5..7157cb6d87 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/black_steel": { + "has_storage_blocks_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/black_steel" + "has_storage_blocks_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json index 367e1ad194..b9739fa118 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/black_steel": { + "has_nuggets_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/black_steel" + "has_nuggets_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json index 29ee8d9552..0061812c55 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/black_steel": { + "has_ingots_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/black_steel" + "has_ingots_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json b/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json index 7ff2c85af0..75f302e35a 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/amethyst": { + "has_dusts_amethyst": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/sulfur": { + "has_dusts_sulfur": { "conditions": { "items": [ { @@ -41,9 +41,9 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/amethyst", + "has_dusts_amethyst", "has_magma_block", - "has_dusts/sulfur" + "has_dusts_sulfur" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json index dd8a5bb685..051ea5b29c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/blue": { + "has_dyes_blue": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/blue" + "has_dyes_blue" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json b/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json index ff4ed5ba7a..12993b2b53 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/amethyst": { + "has_dusts_amethyst": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/niter": { + "has_dusts_niter": { "conditions": { "items": [ { @@ -41,9 +41,9 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/amethyst", + "has_dusts_amethyst", "has_ice", - "has_dusts/niter" + "has_dusts_niter" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json index 51aad756bc..3b6c0e75e9 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/brown": { + "has_dyes_brown": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/brown" + "has_dyes_brown" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json index 41cb1dafab..36b0c1fb72 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/charcoal": { + "has_storage_blocks_charcoal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/charcoal" + "has_storage_blocks_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json index 7e0f754ad3..eaa4162d5e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/charcoal": { + "has_tiny_charcoal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/charcoal" + "has_tiny_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json index 73adae76f6..1c0f23dd17 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/coal_coke": { + "has_storage_blocks_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/coal_coke" + "has_storage_blocks_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json index 1a3116daf9..dc9db4a490 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal_coke": { + "has_tiny_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal_coke" + "has_tiny_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json index 899211a2ef..40eb941ce3 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal": { + "has_tiny_coal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal" + "has_tiny_coal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json index 09ff5ea1aa..7f147b9da7 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/copper": { + "has_ingots_copper": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/copper" + "has_ingots_copper" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json similarity index 81% rename from src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json index e902906cbd..564a439103 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:copper_ingot_from_smeting_dust" + "recipe": "minecraft:copper_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:copper_ingot_from_smeting_dust" + "minecraft:copper_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json index 782231bf54..2f1fa7662d 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/cyan": { + "has_dyes_cyan": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/cyan" + "has_dyes_cyan" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json index e560c67a9d..a2967e7961 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/diamond": { + "has_gems_diamond": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/diamond" + "has_gems_diamond" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json index 401dbcdccc..f83d6f86c3 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/echo": { + "has_storage_blocks_echo": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/echo" + "has_storage_blocks_echo" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json index 7ea4a11431..7daf63ee2d 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/emerald": { + "has_gems_emerald": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/emerald" + "has_gems_emerald" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json b/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json index 1390e0bcef..d61f6f1877 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_buckets/water": { + "has_buckets_water": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_buckets/water" + "has_buckets_water" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json index 046090ba44..5b573cb54d 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/gold": { + "has_ingots_gold": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/gold" + "has_ingots_gold" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json similarity index 82% rename from src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json index 8e9e806664..350d775616 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:gold_ingot_from_smeting_dust" + "recipe": "minecraft:gold_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:gold_ingot_from_smeting_dust" + "minecraft:gold_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json index 3cba8264f0..7439cefb9f 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/gray": { + "has_dyes_gray": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/gray" + "has_dyes_gray" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json index 4e69f202a5..c3bfd78c8e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/green": { + "has_dyes_green": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/green" + "has_dyes_green" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json index 7f1064ef2d..b882881b43 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/niter": { + "has_dusts_niter": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/sulfur": { + "has_dusts_sulfur": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/sulfur", - "has_dusts/niter" + "has_dusts_sulfur", + "has_dusts_niter" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json index 91dba3e17d..8cb673fed8 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/iron": { + "has_ingots_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/iron" + "has_ingots_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json similarity index 82% rename from src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json index 2e55dad0ad..4bd080ffce 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:iron_ingot_from_smeting_dust" + "recipe": "minecraft:iron_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:iron_ingot_from_smeting_dust" + "minecraft:iron_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json index 6ff0b20771..290bc44b49 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/light_blue": { + "has_dyes_light_blue": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/light_blue" + "has_dyes_light_blue" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json index 02ce586f76..017b8ed741 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/light_gray": { + "has_dyes_light_gray": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/light_gray" + "has_dyes_light_gray" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json index 6ccb17e040..77ec06bfef 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/lime": { + "has_dyes_lime": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/lime" + "has_dyes_lime" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json index 2338adbd20..65368ed8cb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/magenta": { + "has_dyes_magenta": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/magenta" + "has_dyes_magenta" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json new file mode 100644 index 0000000000..8d12732668 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_ingots_sooty_iron": { + "conditions": { + "items": [ + { + "items": "#c:ingots/sooty_iron" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:mechanical_machine_parts" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_ingots_sooty_iron" + ] + ], + "rewards": { + "recipes": [ + "ragium:mechanical_machine_parts" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json index 874fbf2113..5637ad97cb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_buckets/lava": { + "has_buckets_lava": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_buckets/lava" + "has_buckets_lava" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json index 6660280d92..38da40dfb6 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gears/diamond": { + "has_gears_diamond": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gears/diamond" + "has_gears_diamond" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json index 2567974672..c31ebcb9c6 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/netherite": { + "has_nuggets_netherite": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/netherite" + "has_nuggets_netherite" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json similarity index 81% rename from src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json index d0bd5aacfc..2d39b58fb4 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:netherite_ingot_from_smeting_dust" + "recipe": "minecraft:netherite_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:netherite_ingot_from_smeting_dust" + "minecraft:netherite_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json index 8b625e0d92..92917400ea 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/netherite": { + "has_ingots_netherite": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/netherite" + "has_ingots_netherite" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json index f708a92dd7..1e71b06094 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/orange": { + "has_dyes_orange": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/orange" + "has_dyes_orange" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json index ad72a0d35b..94f0f8641f 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/pink": { + "has_dyes_pink": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/pink" + "has_dyes_pink" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json index 3dcde9a1b0..fc9bbaebfb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/purple": { + "has_dyes_purple": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/purple" + "has_dyes_purple" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json index c400b3f10c..74607c7dde 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/red": { + "has_dyes_red": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/red" + "has_dyes_red" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json new file mode 100644 index 0000000000..cd4e9a5618 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_furnace": { + "conditions": { + "items": [ + { + "items": "minecraft:furnace" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_furnace" + ] + ], + "rewards": { + "recipes": [ + "ragium:smelter" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json index 8a8dab5909..f029a36432 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/charcoal": { + "has_tiny_charcoal": { "conditions": { "items": [ { @@ -17,7 +17,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_tiny/coal": { + "has_tiny_coal": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal", - "has_tiny/charcoal" + "has_tiny_coal", + "has_tiny_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json index e17e190d31..3b766346f9 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/coal_coke": { + "has_dusts_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/coal_coke" + "has_dusts_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json index cddd134364..49a27d08e1 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/charcoal": { + "has_dusts_charcoal": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/coal": { + "has_dusts_coal": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/coal", - "has_dusts/charcoal" + "has_dusts_coal", + "has_dusts_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json index b5674b4c4c..119ced5039 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/sooty_iron": { + "has_storage_blocks_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/sooty_iron" + "has_storage_blocks_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json index 7e043bb951..95d828304a 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal_coke": { + "has_tiny_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal_coke" + "has_tiny_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json index 271334e671..45011b78d2 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/sooty_iron": { + "has_nuggets_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/sooty_iron" + "has_nuggets_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json index 0e16811aa2..38689e5de8 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json index 080bbf67d2..f537e80d2c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/void_metal": { + "has_storage_blocks_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/void_metal" + "has_storage_blocks_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json index 6a95718480..73429ef771 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/void_metal": { + "has_nuggets_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/void_metal" + "has_nuggets_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json index e0bfd7a13d..a95f3eab3b 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/void_metal": { + "has_ingots_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/void_metal" + "has_ingots_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json index 4f91f4388e..ddfd57dfbd 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/white": { + "has_dyes_white": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/white" + "has_dyes_white" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json index 50120b2429..6e611d43fd 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/yellow": { + "has_dyes_yellow": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/yellow" + "has_dyes_yellow" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/root.json b/src/generated/resources/data/ragium/advancement/root.json index b086a27482..5e132164a6 100644 --- a/src/generated/resources/data/ragium/advancement/root.json +++ b/src/generated/resources/data/ragium/advancement/root.json @@ -1,6 +1,6 @@ { "criteria": { - "has_player_workstations/crafting_tables": { + "has_player_workstations_crafting_tables": { "conditions": { "items": [ { @@ -27,7 +27,7 @@ }, "requirements": [ [ - "has_player_workstations/crafting_tables" + "has_player_workstations_crafting_tables" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json b/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json new file mode 100644 index 0000000000..58a1bfe4be --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:alloy_smelter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json new file mode 100644 index 0000000000..b387f61f7e --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:arcane_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/arcane_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json new file mode 100644 index 0000000000..906473fb8b --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:bio_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/bio_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json new file mode 100644 index 0000000000..d8a5e06bdd --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:chemical_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/chemical_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json b/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json new file mode 100644 index 0000000000..2302f1329d --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:chemical_reactor" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json b/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json new file mode 100644 index 0000000000..7a7e2abebb --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:creative_battery" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/creative_battery" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json b/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json new file mode 100644 index 0000000000..7d0576d6d6 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:electrolyzer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json new file mode 100644 index 0000000000..174e96cccc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:electronics_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/electronics_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json new file mode 100644 index 0000000000..1d11af9dcc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:heat_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/heat_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json new file mode 100644 index 0000000000..8f1dea9acc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json new file mode 100644 index 0000000000..da3f18596f --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:mechanical_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/mechanical_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/mixer.json b/src/generated/resources/data/ragium/loot_table/blocks/mixer.json new file mode 100644 index 0000000000..d3aef1bf46 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/mixer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:mixer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/mixer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/planter.json b/src/generated/resources/data/ragium/loot_table/blocks/planter.json new file mode 100644 index 0000000000..ed02fb6688 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/planter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:planter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/planter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json b/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json new file mode 100644 index 0000000000..04b0390a8b --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:pyrolyzer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/pyrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/refinery.json b/src/generated/resources/data/ragium/loot_table/blocks/refinery.json new file mode 100644 index 0000000000..f1105d1f75 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/refinery.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:refinery" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/refinery" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/scanner.json b/src/generated/resources/data/ragium/loot_table/blocks/scanner.json new file mode 100644 index 0000000000..c4b8410f21 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/scanner.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:scanner" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/scanner" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smelter.json b/src/generated/resources/data/ragium/loot_table/blocks/smelter.json new file mode 100644 index 0000000000..e49b128f68 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smelter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:smelter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smelter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloy_smelter.json b/src/generated/resources/data/ragium/recipe/alloy_smelter.json new file mode 100644 index 0000000000..5f9eb4e7c5 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloy_smelter.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "ragium:heat_machine_parts", + "C": "#c:gears/iron", + "D": "minecraft:blast_furnace" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:alloy_smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json similarity index 56% rename from src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json rename to src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json index 9b8a67e93e..9d0a9b6b44 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json @@ -6,11 +6,17 @@ }, "result": { "count": 1, - "id": "ragium:chemical_machine_casing" + "id": "ragium:chemical_machine_parts" }, "secondary_ingredient": { "count": 1, - "items": "#c:ingots/gold" + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/gold", + "#c:ingots/gold" + ] + } }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json index f47faca680..f2ee777966 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json +++ b/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json @@ -2,7 +2,13 @@ "type": "ragium:alloying", "primary_ingredient": { "count": 2, - "items": "#c:dusts/gold" + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/gold", + "#c:ingots/gold" + ] + } }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json b/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json new file mode 100644 index 0000000000..552004ff9d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:arcane_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembler.json b/src/generated/resources/data/ragium/recipe/assembler.json index fe6904e0e5..220454fb8f 100644 --- a/src/generated/resources/data/ragium/recipe/assembler.json +++ b/src/generated/resources/data/ragium/recipe/assembler.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:crafter" }, diff --git a/src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json b/src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json rename to src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json index 4ec655ad92..7e821c80e8 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 1, "items": "minecraft:apple" diff --git a/src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json b/src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json rename to src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json index 38de6fc160..71e9732bee 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json +++ b/src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 1, "items": "minecraft:blackstone" diff --git a/src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json b/src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json similarity index 71% rename from src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json rename to src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json index 1b00475be6..10776e5bd0 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json @@ -2,11 +2,11 @@ "type": "ragium:assembling", "primary_ingredient": { "count": 1, - "items": "ragium:mechanical_machine_casing" + "items": "ragium:mechanical_machine_parts" }, "result": { "count": 1, - "id": "ragium:heat_machine_casing" + "id": "ragium:heat_machine_parts" }, "secondary_ingredient": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json b/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json deleted file mode 100644 index c5002e32e9..0000000000 --- a/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:bathing", - "fluid_ingredient": { - "amount": 90, - "fluids": "#c:molten_steel" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/obsidian" - }, - "result": { - "count": 1, - "id": "ragium:black_steel_ingot" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json new file mode 100644 index 0000000000..879912fca8 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:banners", + "subtracted": "minecraft:white_banner" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_banner" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json new file mode 100644 index 0000000000..f43955ed31 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:beds", + "subtracted": "minecraft:white_bed" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_bed" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json new file mode 100644 index 0000000000..3ccbc19a18 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:wool_carpets", + "subtracted": "minecraft:white_carpet" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_carpet" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json new file mode 100644 index 0000000000..a059b200d6 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:harnesses", + "subtracted": "minecraft:white_harness" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_harness" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json new file mode 100644 index 0000000000..4fe6d4823d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:shulker_boxes", + "subtracted": "minecraft:white_shulker_box" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_shulker_box" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json new file mode 100644 index 0000000000..212259408d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:wool", + "subtracted": "minecraft:white_wool" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_wool" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bio_machine_casing.json b/src/generated/resources/data/ragium/recipe/bio_machine_casing.json new file mode 100644 index 0000000000..6ae689f256 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:bio_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewery.json b/src/generated/resources/data/ragium/recipe/brewery.json index 12f32f4455..abe46a1af9 100644 --- a/src/generated/resources/data/ragium/recipe/brewery.json +++ b/src/generated/resources/data/ragium/recipe/brewery.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/black_steel", - "B": "ragium:bio_machine_casing", + "B": "ragium:bio_machine_parts", "C": "#c:gears/emerald", "D": "minecraft:brewing_stand" }, diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json b/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json index 8fa1441c3b..590944bb67 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json @@ -14,16 +14,14 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_effects": [ - { - "duration": 900, - "id": "minecraft:darkness", - "show_icon": true - } - ], - "custom_name": "darkness" - } + "custom_effects": [ + { + "duration": 900, + "id": "minecraft:darkness", + "show_icon": true + } + ], + "custom_name": "darkness" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json b/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json index 5dcc8a96c2..8811770758 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json @@ -14,34 +14,32 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_color": 16750848, - "custom_effects": [ - { - "amplifier": 1, - "duration": 400, - "id": "minecraft:regeneration", - "show_icon": true - }, - { - "duration": 6000, - "id": "minecraft:resistance", - "show_icon": true - }, - { - "duration": 6000, - "id": "minecraft:fire_resistance", - "show_icon": true - }, - { - "amplifier": 3, - "duration": 2400, - "id": "minecraft:absorption", - "show_icon": true - } - ], - "custom_name": "enchanted_golden_apple" - } + "custom_color": 16750848, + "custom_effects": [ + { + "amplifier": 1, + "duration": 400, + "id": "minecraft:regeneration", + "show_icon": true + }, + { + "duration": 6000, + "id": "minecraft:resistance", + "show_icon": true + }, + { + "duration": 6000, + "id": "minecraft:fire_resistance", + "show_icon": true + }, + { + "amplifier": 3, + "duration": 2400, + "id": "minecraft:absorption", + "show_icon": true + } + ], + "custom_name": "enchanted_golden_apple" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json b/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json index dce1b8ed37..2e1f6ea7b4 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json @@ -14,23 +14,21 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_color": 16750848, - "custom_effects": [ - { - "amplifier": 1, - "duration": 100, - "id": "minecraft:regeneration", - "show_icon": true - }, - { - "duration": 2400, - "id": "minecraft:absorption", - "show_icon": true - } - ], - "custom_name": "golden_apple" - } + "custom_color": 16750848, + "custom_effects": [ + { + "amplifier": 1, + "duration": 100, + "id": "minecraft:regeneration", + "show_icon": true + }, + { + "duration": 2400, + "id": "minecraft:absorption", + "show_icon": true + } + ], + "custom_name": "golden_apple" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json b/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json index 9d48eb205f..b03938b262 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json @@ -14,16 +14,14 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_effects": [ - { - "duration": 900, - "id": "minecraft:hunger", - "show_icon": true - } - ], - "custom_name": "hunger" - } + "custom_effects": [ + { + "duration": 900, + "id": "minecraft:hunger", + "show_icon": true + } + ], + "custom_name": "hunger" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/candle.json b/src/generated/resources/data/ragium/recipe/candle.json new file mode 100644 index 0000000000..44b34925f4 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/candle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:strings", + "B": "ragium:beeswax" + }, + "pattern": [ + "A", + "B" + ], + "result": { + "id": "minecraft:candle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/chemical_bath.json b/src/generated/resources/data/ragium/recipe/chemical_bath.json index 24191a87f8..ddcd939909 100644 --- a/src/generated/resources/data/ragium/recipe/chemical_bath.json +++ b/src/generated/resources/data/ragium/recipe/chemical_bath.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/black_steel", - "B": "ragium:chemical_machine_casing", + "B": "ragium:chemical_machine_parts", "C": "#c:gears/gold", "D": "minecraft:cauldron" }, diff --git a/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json b/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json new file mode 100644 index 0000000000..f427afcfda --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:chemical_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/compressor.json b/src/generated/resources/data/ragium/recipe/compressor.json index c5a19d03b9..65da642d0d 100644 --- a/src/generated/resources/data/ragium/recipe/compressor.json +++ b/src/generated/resources/data/ragium/recipe/compressor.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "#minecraft:anvil" }, diff --git a/src/generated/resources/data/ragium/recipe/copper_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/copper_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/copper_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/copper_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/crusher.json b/src/generated/resources/data/ragium/recipe/crusher.json index a02f48ba13..6d685ee400 100644 --- a/src/generated/resources/data/ragium/recipe/crusher.json +++ b/src/generated/resources/data/ragium/recipe/crusher.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:grindstone" }, diff --git a/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json new file mode 100644 index 0000000000..6b6b812272 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/copper" + }, + "primary_result": { + "count": 4, + "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_gear.json b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json new file mode 100644 index 0000000000..15464b9dd9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/diamond" + }, + "primary_result": { + "count": 4, + "id": "ragium:diamond_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json new file mode 100644 index 0000000000..1db7a00443 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/emerald" + }, + "primary_result": { + "count": 4, + "id": "ragium:emerald_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json new file mode 100644 index 0000000000..f9923e9551 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/gold" + }, + "primary_result": { + "count": 4, + "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_gear.json b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json new file mode 100644 index 0000000000..336009a450 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/iron" + }, + "primary_result": { + "count": 4, + "id": "ragium:iron_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json new file mode 100644 index 0000000000..f128317d6c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/netherite" + }, + "primary_result": { + "count": 4, + "id": "ragium:netherite_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json new file mode 100644 index 0000000000..02d811d091 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:barrels/wooden" + }, + "primary_result": { + "count": 7, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json new file mode 100644 index 0000000000..d3b51e0dd1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:boats", + "subtracted": "#minecraft:chest_boats" + } + }, + "primary_result": { + "count": 5, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json new file mode 100644 index 0000000000..1f9644759c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:chest_boats" + }, + "primary_result": { + "count": 13, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json new file mode 100644 index 0000000000..8f5965d5ab --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:chests/wooden" + }, + "primary_result": { + "count": 8, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json new file mode 100644 index 0000000000..de3e0d8100 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:fence_gates/wooden" + }, + "primary_result": { + "count": 4, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json new file mode 100644 index 0000000000..194b0efd32 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:fences/wooden" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json new file mode 100644 index 0000000000..9026f244ee --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/wood" + }, + "primary_result": { + "count": 4, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json new file mode 100644 index 0000000000..f5a798d3db --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 4, + "items": "#c:gears/wood" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json new file mode 100644 index 0000000000..b382f45af3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:hanging_signs" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json new file mode 100644 index 0000000000..9fa77fa1c8 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:logs" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json new file mode 100644 index 0000000000..49a657d9f9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#c:rods/wooden" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json new file mode 100644 index 0000000000..a2b716c1fc --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:signs" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json new file mode 100644 index 0000000000..d15344418d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_buttons" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json new file mode 100644 index 0000000000..e12d54cee0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_doors" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json new file mode 100644 index 0000000000..8e2eb23919 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_pressure_plates" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json new file mode 100644 index 0000000000..dd7ee185a7 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_shelves" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json new file mode 100644 index 0000000000..5535793119 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#minecraft:wooden_slabs" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json new file mode 100644 index 0000000000..5ef313c85d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#minecraft:wooden_stairs" + }, + "primary_result": { + "count": 3, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json new file mode 100644 index 0000000000..77981dc999 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 3, + "items": "#minecraft:wooden_trapdoors" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/cutting_machine.json b/src/generated/resources/data/ragium/recipe/cutting_machine.json index b711390de5..91eaf931d8 100644 --- a/src/generated/resources/data/ragium/recipe/cutting_machine.json +++ b/src/generated/resources/data/ragium/recipe/cutting_machine.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:stonecutter" }, diff --git a/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json b/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json new file mode 100644 index 0000000000..9ad75d7d92 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:draining", + "fluid_result": { + "amount": 1000, + "id": "ragium:honey" + }, + "ingredient": { + "count": 1, + "items": "minecraft:honeycomb" + }, + "item_result": { + "count": 1, + "id": "ragium:beeswax" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json b/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json new file mode 100644 index 0000000000..273e9638d4 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:electronics_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json b/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json new file mode 100644 index 0000000000..e74fcc1596 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json @@ -0,0 +1,14 @@ +{ + "type": "ragium:enchanting", + "ingredient": { + "count": 16, + "items": "#c:gems/diamond" + }, + "result": { + "enchantments": { + "minecraft:protection": 4, + "minecraft:unbreaking": 3 + } + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/enchanting/protection.json b/src/generated/resources/data/ragium/recipe/enchanting/protection.json new file mode 100644 index 0000000000..a3f0f85895 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/enchanting/protection.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:enchanting", + "ingredient": { + "count": 64, + "items": "#c:ingots/iron" + }, + "result": { + "id": "minecraft:protection" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezer.json b/src/generated/resources/data/ragium/recipe/freezer.json index 3e9dee517d..67ee9cb77a 100644 --- a/src/generated/resources/data/ragium/recipe/freezer.json +++ b/src/generated/resources/data/ragium/recipe/freezer.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:heat_machine_casing", + "B": "ragium:heat_machine_parts", "C": "#c:gears/iron", "D": "#c:buckets/water" }, diff --git a/src/generated/resources/data/ragium/recipe/gold_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/gold_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/gold_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/gold_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/heat_machine_casing.json b/src/generated/resources/data/ragium/recipe/heat_machine_casing.json new file mode 100644 index 0000000000..be9872fc4c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:heat_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/iron_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/iron_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/iron_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/iron_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/lingering_bottle.json b/src/generated/resources/data/ragium/recipe/lingering_bottle.json new file mode 100644 index 0000000000..dbe591b9b5 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/lingering_bottle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "minecraft:dragon_breath", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle" + ], + "result": { + "count": 4, + "id": "ragium:lingering_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/machine_casing.json b/src/generated/resources/data/ragium/recipe/machine_casing.json new file mode 100644 index 0000000000..1e93da5eda --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/machine_casing.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "#c:ingots/sooty_iron" + }, + "pattern": [ + "ABA", + "B B", + "ABA" + ], + "result": { + "count": 4, + "id": "ragium:machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json b/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json index f8c7968dd0..546dcb5e42 100644 --- a/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json @@ -1,17 +1,7 @@ { - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": "#c:ingots/sooty_iron", - "B": "#c:dusts/redstone" - }, - "pattern": [ - "AAA", - "BBB", - "AAA" - ], + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", "result": { - "count": 3, "id": "ragium:mechanical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json b/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json new file mode 100644 index 0000000000..ec8549a7a3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:ingots/sooty_iron", + "B": "#c:dusts/redstone" + }, + "pattern": [ + "AAA", + "BBB", + "AAA" + ], + "result": { + "count": 3, + "id": "ragium:mechanical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melter.json b/src/generated/resources/data/ragium/recipe/melter.json index 77a6165cd0..2bb3bf512e 100644 --- a/src/generated/resources/data/ragium/recipe/melter.json +++ b/src/generated/resources/data/ragium/recipe/melter.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:heat_machine_casing", + "B": "ragium:heat_machine_parts", "C": "#c:gears/iron", "D": "#c:buckets/lava" }, diff --git a/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json b/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json deleted file mode 100644 index 9dacf7c8d4..0000000000 --- a/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:melting", - "ingredient": { - "count": 1, - "items": "#c:ingots/sooty_iron" - }, - "result": { - "amount": 90, - "id": "ragium:molten_steel" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/netherite_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/netherite_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/netherite_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/netherite_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/smelter.json b/src/generated/resources/data/ragium/recipe/smelter.json new file mode 100644 index 0000000000..4cbe82578a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelter.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "ragium:heat_machine_parts", + "C": "#c:gears/iron", + "D": "minecraft:furnace" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/splash_bottle.json b/src/generated/resources/data/ragium/recipe/splash_bottle.json new file mode 100644 index 0000000000..65a2cd7b01 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/splash_bottle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:gunpowders", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle" + ], + "result": { + "count": 4, + "id": "ragium:splash_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines.json b/src/generated/resources/data/ragium/tags/block/machines.json index cfabbf4467..5e6f5515e6 100644 --- a/src/generated/resources/data/ragium/tags/block/machines.json +++ b/src/generated/resources/data/ragium/tags/block/machines.json @@ -2,6 +2,7 @@ "values": [ "#ragium:machines/bio", "#ragium:machines/chemical", + "#ragium:machines/electronics", "#ragium:machines/heat", "#ragium:machines/mechanical" ] diff --git a/src/generated/resources/data/ragium/tags/block/machines/bio.json b/src/generated/resources/data/ragium/tags/block/machines/bio.json index 2e0a49caa8..9d8ee3c406 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/bio.json +++ b/src/generated/resources/data/ragium/tags/block/machines/bio.json @@ -1,5 +1,6 @@ { "values": [ - "ragium:brewery" + "ragium:brewery", + "ragium:planter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/chemical.json b/src/generated/resources/data/ragium/tags/block/machines/chemical.json index 246c013bb4..72f0688681 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/block/machines/chemical.json @@ -1,5 +1,8 @@ { "values": [ - "ragium:chemical_bath" + "ragium:chemical_bath", + "ragium:chemical_reactor", + "ragium:electrolyzer", + "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/electronics.json b/src/generated/resources/data/ragium/tags/block/machines/electronics.json new file mode 100644 index 0000000000..f2a6ce3824 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/block/machines/electronics.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:scanner" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/heat.json b/src/generated/resources/data/ragium/tags/block/machines/heat.json index 3731ef46c9..37431c56ac 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/block/machines/heat.json @@ -1,6 +1,10 @@ { "values": [ + "ragium:alloy_smelter", "ragium:freezer", - "ragium:melter" + "ragium:melter", + "ragium:pyrolyzer", + "ragium:refinery", + "ragium:smelter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines.json b/src/generated/resources/data/ragium/tags/item/machines.json index cfabbf4467..5e6f5515e6 100644 --- a/src/generated/resources/data/ragium/tags/item/machines.json +++ b/src/generated/resources/data/ragium/tags/item/machines.json @@ -2,6 +2,7 @@ "values": [ "#ragium:machines/bio", "#ragium:machines/chemical", + "#ragium:machines/electronics", "#ragium:machines/heat", "#ragium:machines/mechanical" ] diff --git a/src/generated/resources/data/ragium/tags/item/machines/bio.json b/src/generated/resources/data/ragium/tags/item/machines/bio.json index 2e0a49caa8..9d8ee3c406 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/bio.json +++ b/src/generated/resources/data/ragium/tags/item/machines/bio.json @@ -1,5 +1,6 @@ { "values": [ - "ragium:brewery" + "ragium:brewery", + "ragium:planter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/chemical.json b/src/generated/resources/data/ragium/tags/item/machines/chemical.json index 246c013bb4..72f0688681 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/item/machines/chemical.json @@ -1,5 +1,8 @@ { "values": [ - "ragium:chemical_bath" + "ragium:chemical_bath", + "ragium:chemical_reactor", + "ragium:electrolyzer", + "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/electronics.json b/src/generated/resources/data/ragium/tags/item/machines/electronics.json new file mode 100644 index 0000000000..f2a6ce3824 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/machines/electronics.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:scanner" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/heat.json b/src/generated/resources/data/ragium/tags/item/machines/heat.json index 3731ef46c9..37431c56ac 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/item/machines/heat.json @@ -1,6 +1,10 @@ { "values": [ + "ragium:alloy_smelter", "ragium:freezer", - "ragium:melter" + "ragium:melter", + "ragium:pyrolyzer", + "ragium:refinery", + "ragium:smelter" ] } \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt index 901d483dd5..2f562ecacc 100644 --- a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt +++ b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt @@ -77,6 +77,7 @@ data object HTConstants { // Serialization const val ENERGY = "energy" const val TIME = "time" + const val LAST_RECIPE = "last_recipe" const val INGREDIENT = "ingredient" const val INGREDIENTS = "ingredients" diff --git a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt index ff9eeed4c8..4ef41af85f 100644 --- a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt +++ b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt @@ -1,11 +1,15 @@ package hiiragi283.lib.color +import hiiragi283.lib.data.lang.HTLangName +import net.minecraft.world.item.DyeColor + /** * 色のバリエーションを持つ要素をまとめるクラスです。 * @param T 要素のクラス * @author Hiiragi Tsubasa * @since 26.1.0 */ +@JvmRecord data class HTColoredCollection( val white: T, val orange: T, @@ -23,55 +27,67 @@ data class HTColoredCollection( val green: T, val red: T, val black: T -) : AbstractCollection() { +) : Collection { companion object { @JvmField - val VALUES: HTColoredCollection = HTColoredCollection( - HTDefaultColor.WHITE, - HTDefaultColor.ORANGE, - HTDefaultColor.MAGENTA, - HTDefaultColor.LIGHT_BLUE, - HTDefaultColor.YELLOW, - HTDefaultColor.LIME, - HTDefaultColor.PINK, - HTDefaultColor.GRAY, - HTDefaultColor.LIGHT_GRAY, - HTDefaultColor.CYAN, - HTDefaultColor.PURPLE, - HTDefaultColor.BLUE, - HTDefaultColor.BROWN, - HTDefaultColor.GREEN, - HTDefaultColor.RED, - HTDefaultColor.BLACK + val VALUES: HTColoredCollection = HTColoredCollection( + DyeColor.WHITE, + DyeColor.ORANGE, + DyeColor.MAGENTA, + DyeColor.LIGHT_BLUE, + DyeColor.YELLOW, + DyeColor.LIME, + DyeColor.PINK, + DyeColor.GRAY, + DyeColor.LIGHT_GRAY, + DyeColor.CYAN, + DyeColor.PURPLE, + DyeColor.BLUE, + DyeColor.BROWN, + DyeColor.GREEN, + DyeColor.RED, + DyeColor.BLACK ) - } - operator fun get(color: HTDefaultColor): T = when (color) { - HTDefaultColor.WHITE -> white - HTDefaultColor.ORANGE -> orange - HTDefaultColor.MAGENTA -> magenta - HTDefaultColor.LIGHT_BLUE -> lightBlue - HTDefaultColor.YELLOW -> yellow - HTDefaultColor.LIME -> lime - HTDefaultColor.PINK -> pink - HTDefaultColor.GRAY -> gray - HTDefaultColor.LIGHT_GRAY -> lightGray - HTDefaultColor.CYAN -> cyan - HTDefaultColor.PURPLE -> purple - HTDefaultColor.BLUE -> blue - HTDefaultColor.BROWN -> brown - HTDefaultColor.GREEN -> green - HTDefaultColor.RED -> red - HTDefaultColor.BLACK -> black + @JvmField + val TRANSLATED_NAMES: HTColoredCollection = HTColoredCollection( + HTLangName("White", "白色"), + HTLangName("Orange", "橙色"), + HTLangName("Magenta", "赤紫色"), + HTLangName("Light Blue", "空色"), + HTLangName("Yellow", "黄色"), + HTLangName("Lime", "黄緑色"), + HTLangName("Pink", "桃色"), + HTLangName("Gray", "灰色"), + HTLangName("Light Gray", "薄灰色"), + HTLangName("Cyan", "青緑色"), + HTLangName("Purple", "紫色"), + HTLangName("Blue", "青色"), + HTLangName("Brown", "茶色"), + HTLangName("Green", "緑色"), + HTLangName("Red", "赤色"), + HTLangName("Black", "黒色") + ) } - fun asSequence(): Sequence = HTDefaultColor.entries.asSequence().map(::get) - - override val size: Int = 16 - - override fun isEmpty(): Boolean = false - - override fun iterator(): Iterator = asSequence().iterator() + operator fun get(color: DyeColor): T = when (color) { + DyeColor.WHITE -> white + DyeColor.ORANGE -> orange + DyeColor.MAGENTA -> magenta + DyeColor.LIGHT_BLUE -> lightBlue + DyeColor.YELLOW -> yellow + DyeColor.LIME -> lime + DyeColor.PINK -> pink + DyeColor.GRAY -> gray + DyeColor.LIGHT_GRAY -> lightGray + DyeColor.CYAN -> cyan + DyeColor.PURPLE -> purple + DyeColor.BLUE -> blue + DyeColor.BROWN -> brown + DyeColor.GREEN -> green + DyeColor.RED -> red + DyeColor.BLACK -> black + } inline fun map(transform: (T) -> R): HTColoredCollection = HTColoredCollection( transform(white), @@ -111,11 +127,23 @@ data class HTColoredCollection( transform(red, other.red), transform(black, other.black) ) + + override val size: Int get() = 16 + + override fun isEmpty(): Boolean = false + + override fun contains(element: @UnsafeVariance T): Boolean = this.any { it == element } + + fun asSequence(): Sequence = DyeColor.entries.asSequence().map(::get) + + override fun iterator(): Iterator = asSequence().iterator() + + override fun containsAll(elements: Collection<@UnsafeVariance T>): Boolean = elements.all { contains(it) } } /** * @author Hiiragi Tsubasa * @since 26.1.0 */ -inline fun HTColoredCollection(init: (color: HTDefaultColor) -> T): HTColoredCollection = +inline fun HTColoredCollection(init: (color: DyeColor) -> T): HTColoredCollection = HTColoredCollection.VALUES.map(init) diff --git a/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt b/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt deleted file mode 100644 index 4fe423dc4a..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt +++ /dev/null @@ -1,88 +0,0 @@ -package hiiragi283.lib.color - -import com.mojang.serialization.Codec -import hiiragi283.lib.data.lang.HTLangName -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import io.netty.buffer.ByteBuf -import net.minecraft.ChatFormatting -import net.minecraft.network.chat.TextColor -import net.minecraft.network.codec.StreamCodec -import net.minecraft.tags.TagKey -import net.minecraft.util.ARGB -import net.minecraft.util.StringRepresentable -import net.minecraft.world.item.DyeColor -import net.minecraft.world.item.Item - -/** - * Minecraftで使用される様々な「色」をまとめたクラスです。 - * - * 参考 : [Mekanism - EnumColor](https://github.com/mekanism/Mekanism/blob/26.1/src/api/java/mekanism/api/text/EnumColor.java) - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -enum class HTDefaultColor( - val color: Int, - val dyeColor: DyeColor, - val textColor: TextColor, - enName: String, - jaName: String -) : StringRepresentable, - HTLangName by HTLangName(enName, jaName) { - WHITE(ChatFormatting.WHITE, DyeColor.WHITE, "White", "白色"), - ORANGE(intArrayOf(255, 161, 96), DyeColor.ORANGE, "Orange", "橙色"), - MAGENTA(intArrayOf(213, 94, 203), DyeColor.MAGENTA, "Magenta", "赤紫色"), - LIGHT_BLUE(ChatFormatting.AQUA, DyeColor.LIGHT_BLUE, "Light Blue", "空色"), - YELLOW(ChatFormatting.YELLOW, DyeColor.YELLOW, "Yellow", "黄色"), - LIME(ChatFormatting.GREEN, DyeColor.LIME, "Lime", "黄緑色"), - PINK(ChatFormatting.LIGHT_PURPLE, DyeColor.PINK, "Pink", "桃色"), - GRAY(ChatFormatting.DARK_GRAY, DyeColor.GRAY, "Gray", "灰色"), - LIGHT_GRAY(ChatFormatting.GRAY, DyeColor.LIGHT_GRAY, "Light Gray", "薄灰色"), - CYAN(ChatFormatting.DARK_AQUA, DyeColor.CYAN, "Cyan", "青緑色"), - PURPLE(intArrayOf(164, 96, 217), DyeColor.PURPLE, "Purple", "紫色"), - BLUE(ChatFormatting.BLUE, DyeColor.BLUE, "Blue", "青色"), - BROWN(intArrayOf(161, 118, 73), DyeColor.BROWN, "Brown", "茶色"), - GREEN(intArrayOf(89, 193, 95), DyeColor.GREEN, "Green", "緑色"), - RED(ChatFormatting.RED, DyeColor.RED, "Red", "赤色"), - BLACK(ChatFormatting.BLACK, DyeColor.BLACK, "Black", "黒色") - ; - - constructor(color: ChatFormatting, dyeColor: DyeColor, enName: String, jaName: String) : this( - dyeColor.textureDiffuseColor, - dyeColor, - TextColor.fromLegacyFormat(color) ?: error("$color is not color format"), - enName, - jaName - ) - - constructor(color: Int, dyeColor: DyeColor, enName: String, jaName: String) : this( - color, - dyeColor, - TextColor.fromRgb(color), - enName, - jaName - ) - - constructor(color: IntArray, dyeColor: DyeColor, enName: String, jaName: String) : this( - ARGB.color(color[0], color[1], color[2]), - dyeColor, - enName, - jaName - ) - - companion object { - @JvmField - val CODEC: Codec = HTCodecs.stringEnum(HTDefaultColor::getSerializedName) - - @JvmField - val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() - - @JvmStatic - fun fromDye(dyeColor: DyeColor): HTDefaultColor = entries.first { it.dyeColor == dyeColor } - } - - val dyesTag: TagKey = dyeColor.tag - val dyedTag: TagKey = dyeColor.dyedTag - - override fun getSerializedName(): String = name.lowercase() -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt b/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt index e6249295a8..2def4557a8 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt @@ -11,18 +11,18 @@ import net.neoforged.neoforge.common.conditions.ICondition fun interface ConditionalExporter { /** * 値を登録します。 - * @param id 受け取ったID + * @param key 受け取ったID * @param value 受け取った値 * @param conditions 値を読み込む条件の一覧 */ - fun accept(id: ResourceKey, value: T, conditions: List) + fun accept(key: ResourceKey, value: T, conditions: List) /** * 値を登録します。 - * @param id 受け取ったID + * @param key 受け取ったID * @param value 受け取った値 */ - fun accept(id: ResourceKey, value: T) { - accept(id, value, listOf()) + fun accept(key: ResourceKey, value: T) { + accept(key, value, listOf()) } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt b/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt deleted file mode 100644 index b5cf00a5c7..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package hiiragi283.lib.data - -import net.minecraft.core.component.DataComponentMap -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.core.component.DataComponentType -import net.neoforged.neoforge.common.MutableDataComponentHolder - -/** - * [DataComponentType]に基づいて値を保存する処理を表すインターフェースです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -interface DataComponentSetter { - operator fun set(type: DataComponentType, value: T) - - fun remove(type: DataComponentType) - - fun setOrRemove(type: DataComponentType, value: T?) { - when (value) { - null -> remove(type) - else -> set(type, value) - } - } -} - -/** - * [DataComponentMap.Builder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(builder: DataComponentMap.Builder): DataComponentSetter = MapDataComponentSetter(builder) - -@JvmRecord -private data class MapDataComponentSetter(val builder: DataComponentMap.Builder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - builder.set(type, value) - } - - override fun remove(type: DataComponentType) { - builder.set(type, null) - } -} - -/** - * [DataComponentPatch.Builder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(builder: DataComponentPatch.Builder): DataComponentSetter = PatchDataComponentSetter(builder) - -@JvmRecord -private data class PatchDataComponentSetter(val builder: DataComponentPatch.Builder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - builder.set(type, value) - } - - override fun remove(type: DataComponentType) { - builder.remove(type) - } -} - -/** - * [MutableDataComponentHolder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(holder: MutableDataComponentHolder): DataComponentSetter = HolderDataComponentSetter(holder) - -@JvmRecord -private data class HolderDataComponentSetter(val holder: MutableDataComponentHolder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - holder.set(type, value) - } - - override fun remove(type: DataComponentType) { - holder.remove(type) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt index 461046b9fa..0de1f6c0c3 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt @@ -7,6 +7,7 @@ import hiiragi283.lib.HTComparators import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.RegistryKey import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.toId import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.lib.tag.HTTagPrefix @@ -60,11 +61,11 @@ abstract class ExporterDataProvider( .thenCompose { registries: HolderLookup.Provider -> val map: MutableMap, WithConditions> = Object2ObjectOpenHashMap() this.registries = registries - this.exporter = ConditionalExporter { id: ResourceKey, value: R, conditions: List -> - val fixedId: ResourceKey = modifyId(id) - val oldValue: WithConditions? = map.put(fixedId, WithConditions(conditions, value)) + this.exporter = ConditionalExporter { key: ResourceKey, value: R, conditions: List -> + val fixedKey: ResourceKey = modifyId(key) + val oldValue: WithConditions? = map.put(fixedKey, WithConditions(conditions, value)) if (oldValue != null) { - error("Duplicate registration for $fixedId, new=$value, old=$oldValue") + error("Duplicate registration for $fixedKey, new=$value, old=$oldValue") } } exportValues() @@ -105,7 +106,7 @@ abstract class ExporterDataProvider( */ protected fun id(vararg path: String): Identifier = modId.toId(*path) - protected fun getHasName(id: Identifier): String = "has_${id.path}" + protected fun getHasName(id: Identifier): String = "has_${id.debugPath}" protected fun getHasName(value: HTValueWithId<*>): String = getHasName(value.idOrThrow) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt index 8ba8308628..3b5d09a0fa 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt @@ -2,10 +2,14 @@ package hiiragi283.lib.data.recipe import hiiragi283.lib.HTConstants import hiiragi283.lib.data.ExporterDataProvider +import hiiragi283.lib.tag.CommonTagPrefixes +import hiiragi283.lib.tag.HTMaterialLike import net.minecraft.core.HolderLookup +import net.minecraft.core.HolderSet import net.minecraft.core.registries.Registries import net.minecraft.data.PackOutput import net.minecraft.resources.Identifier +import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Recipe import net.neoforged.neoforge.common.conditions.ModLoadedCondition import java.util.concurrent.CompletableFuture @@ -21,6 +25,14 @@ abstract class HTRecipeProvider( future: CompletableFuture, modId: String ) : ExporterDataProvider>(packOutput, future, Registries.RECIPE, modId, Recipe.CONDITIONAL_CODEC) { + // Extension // + + fun dustOrGem(material: HTMaterialLike): HolderSet = + setOf(CommonTagPrefixes.DUST, CommonTagPrefixes.GEM).map { it.itemTagKey(material) }.let(::holderSet) + + fun dustOrIngot(material: HTMaterialLike): HolderSet = + setOf(CommonTagPrefixes.DUST, CommonTagPrefixes.INGOT).map { it.itemTagKey(material) }.let(::holderSet) + // Integration // abstract class Integration( diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt index 08c544aefd..d6e3a52ab0 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt @@ -1,7 +1,9 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult @@ -20,7 +22,7 @@ import kotlin.contracts.contract */ class HTDoubleItemToItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(primary, secondary, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt index 3aa037a0f8..33ad0d0678 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -18,7 +21,7 @@ abstract class HTFluidToRecipeBuilder, out RECIPE : R prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt index 84421a238c..f28ad7d2c0 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt @@ -1,7 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +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.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient @@ -25,7 +29,7 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - final override fun getPrimalId(): Identifier = result.getId() + final override fun getRecipeId(): Identifier? = result.getId() final override fun createRecipe(): RECIPE = factory.create(itemIngredient, fluidIngredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt index 56c36006df..c2d02589ae 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt @@ -1,7 +1,9 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult @@ -21,7 +23,7 @@ import kotlin.contracts.contract */ class HTItemToDoubleItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = primary.getId() + override fun getRecipeId(): Identifier? = primary.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, primary, secondary, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt similarity index 89% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt index 6f6bdf0ed8..47df2096a6 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +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.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -21,7 +24,7 @@ import kotlin.contracts.contract */ class HTItemToItemAndFluidRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = itemResult.getId() + override fun getRecipeId(): Identifier? = itemResult.getId() ?: fluidResult.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt index daae11a581..09fa1f6604 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +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.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -18,7 +21,7 @@ abstract class HTItemToRecipeBuilder, out RECIPE : Re prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt similarity index 97% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt index 160e4022cd..1abab35f04 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt @@ -1,4 +1,4 @@ -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder import hiiragi283.lib.recipe.base.HTProgressData import net.minecraft.world.item.crafting.Recipe diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt similarity index 70% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt index c83bab169d..e12dcf7ecb 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt @@ -1,12 +1,13 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder import hiiragi283.lib.data.ConditionBuilder import hiiragi283.lib.data.ConditionalExporter import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.util.HTBuilderMarker +import hiiragi283.lib.util.Identity import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.Identifier import net.minecraft.world.item.crafting.Recipe @@ -24,6 +25,16 @@ import kotlin.contracts.contract */ @HTBuilderMarker abstract class HTRecipeBuilder>(private val prefix: String) { + /** + * デフォルトのIDを取得します。 + */ + protected abstract fun getRecipeId(): Identifier? + + /** + * レシピを生成します。 + */ + protected abstract fun createRecipe(): RECIPE + // Conditions // /** @@ -32,9 +43,6 @@ abstract class HTRecipeBuilder>(private val prefix: Strin @PublishedApi internal val conditions: MutableList = ObjectArrayList() - /** - * @since 26.1.0 - */ inline fun condition(builderAction: ConditionBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) @@ -42,39 +50,40 @@ abstract class HTRecipeBuilder>(private val prefix: Strin ConditionBuilder(conditions).apply(builderAction) } - // Save // + // Recipe Id // /** * レシピ[ID][Identifier]を保持するインスタンス */ - val recipeId: RecipeId by lazy(::RecipeId) + val recipeId: RecipeId = RecipeId() inner class RecipeId { /** * 保持している[ID][Identifier] */ - var id: Identifier = getPrimalId() + var defaultId: () -> Identifier = { getRecipeId() ?: error("Could not generate default recipe id") } private set /** - * 現在の[ID][Identifier]にプレフィックスを追加します。 + * @since 26.1.6 */ - infix fun prefix(prefix: String) { - id = id.withPrefix(prefix) + infix fun modify(operator: Identity) { + val defaultId1: () -> Identifier = defaultId + defaultId = { defaultId1().let(operator) } } /** - * 現在の[ID][Identifier]にサフィックスを追加します。 + * 現在の[ID][Identifier]にプレフィックスを追加します。 */ - infix fun suffix(suffix: String) { - id = id.withSuffix(suffix) + infix fun prefix(prefix: String) { + modify { id: Identifier -> id.withPrefix(prefix) } } /** - * 現在の[ID][Identifier]を[path]で置換します。 + * 現在の[ID][Identifier]にサフィックスを追加します。 */ - infix fun replace(path: String) { - id = id.withPath(path) + infix fun suffix(suffix: String) { + modify { id: Identifier -> id.withSuffix(suffix) } } /** @@ -88,43 +97,26 @@ abstract class HTRecipeBuilder>(private val prefix: Strin * 現在の[ID][Identifier]を[newId]で置換します。 */ infix fun replace(newId: Identifier) { - id = newId + defaultId = { newId } } } + // Exporter // + fun build(): HTRecipeHolder = build("$prefix/") fun buildSynthetic(): HTRecipeHolder = build("/$prefix/") - private fun build(prefix: String): HTRecipeHolder = - HTRecipeHolder(RecipeKey(recipeId.id.withPrefix(prefix)), createRecipe()) + private fun build(prefix: String): HTRecipeHolder = HTRecipeHolder( + recipeId.defaultId().withPrefix(prefix).let(::RecipeKey), + createRecipe() + ) /** * レシピを生成します。 * @param exporter 生成したレシピの出力先 */ open fun save(exporter: ConditionalExporter>) { - this.save { id: RecipeKey, recipe: RECIPE -> exporter.accept(id, recipe, conditions) } + build().let { (key: RecipeKey, recipe: RECIPE) -> exporter.accept(key, recipe, conditions) } } - - /** - * 生成したレシピを処理します。 - * @param consumer 生成されたレシピIDとレシピを処理するブロック - */ - inline fun save(consumer: (id: RecipeKey, recipe: RECIPE) -> R): R { - contract { - callsInPlace(consumer, InvocationKind.EXACTLY_ONCE) - } - return build().let { (id: RecipeKey, recipe: RECIPE) -> consumer(id, recipe) } - } - - /** - * デフォルトのIDを取得します。 - */ - protected abstract fun getPrimalId(): Identifier - - /** - * レシピを生成します。 - */ - protected abstract fun createRecipe(): RECIPE } diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt similarity index 78% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt index ffeebbc926..a2d732b5b8 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.ingredient import hiiragi283.lib.data.HolderAcceptor import hiiragi283.lib.recipe.ingredient.HTFluidIngredient @@ -9,9 +9,7 @@ import hiiragi283.lib.util.HTDelegates import net.minecraft.core.HolderSet import net.minecraft.world.level.material.Fluid import net.neoforged.neoforge.fluids.FluidType -import net.neoforged.neoforge.fluids.crafting.CompoundFluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredient -import net.neoforged.neoforge.registries.holdersets.OrHolderSet import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -43,26 +41,10 @@ class HTFluidIngredientBuilder @PublishedApi internal constructor() { ingredient = this } - /** - * @since 26.1.2 - */ - @JvmName("unaryPlusCompound") - operator fun List.unaryPlus() { - +CompoundFluidIngredient(this) - } - operator fun HolderSet.unaryPlus() { +FluidIngredient.of(this) } - /** - * @since 26.1.2 - */ - @JvmName("unaryPlusOr") - operator fun List>.unaryPlus() { - +OrHolderSet(this) - } - inline fun fluids(builderAction: HolderAcceptor.FluidSetBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt similarity index 82% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt index 326c435a82..9a02b0c8f1 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.ingredient import hiiragi283.lib.data.HolderAcceptor import hiiragi283.lib.recipe.ingredient.HTItemIngredient @@ -9,9 +9,7 @@ import hiiragi283.lib.util.HTDelegates import net.minecraft.core.HolderSet import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Ingredient -import net.neoforged.neoforge.common.crafting.CompoundIngredient import net.neoforged.neoforge.common.crafting.ICustomIngredient -import net.neoforged.neoforge.registries.holdersets.OrHolderSet import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -47,20 +45,10 @@ class HTItemIngredientBuilder @PublishedApi internal constructor() { ingredient = this.toVanilla() } - @JvmName("unaryPlusCompound") - operator fun List.unaryPlus() { - +CompoundIngredient(this) - } - operator fun HolderSet.unaryPlus() { ingredient = Ingredient.of(this) } - @JvmName("unaryPlusOr") - operator fun List>.unaryPlus() { - +OrHolderSet(this) - } - inline fun items(builderAction: HolderAcceptor.ItemSetBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt similarity index 93% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt index 9e21ac9310..928f3a0513 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt @@ -1,8 +1,7 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.result -import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.registry.HTDeferredHolder import hiiragi283.lib.registry.HTFluidContent @@ -100,14 +99,10 @@ class HTFluidResultBuilder @PublishedApi internal constructor() { // Potion @JvmName("unaryPlusPotion") operator fun Holder.unaryPlus() { - +BottledPotionContents(this) + +PotionContents(this) } operator fun PotionContents.unaryPlus() { - +BottledPotionContents(this) - } - - operator fun BottledPotionContents.unaryPlus() { +HTFluidResult.PotionEntry(this) } diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt similarity index 98% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt index 99cfd07dc6..3eac0cbc07 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.result import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.registry.HTDeferredBlockAndItem diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt index 311c3aa6d5..bf2bbc85f0 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt @@ -3,7 +3,6 @@ package hiiragi283.lib.integration.jei import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.item.toTemplateOrNull import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.display.SlotDisplay import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient @@ -154,10 +153,5 @@ data object HTJeiRecipeHelper { inline fun getRecipes( lookup: HTRecipeLookup ): List> = lookup.getAllRecipes(HTPhysicalSideHelper.createLookupContext()) - .mapNotNull { (key: RecipeKey, recipe: RECIPE_A) -> - when (recipe) { - is RECIPE_B -> HTRecipeHolder(key, recipe) - else -> null - } - }.toList() + .mapNotNull { holder: HTRecipeHolder -> holder.castAs() }.toList() } diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt index 548a6ea5c9..94e74d4545 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt @@ -94,15 +94,20 @@ abstract class HTBasicRecipeCategory( protected fun IRecipeSlotBuilder.setSlotBackground(type: HTBackgroundType): IRecipeSlotBuilder = this.setBackground(HTJeiDrawables.getSlot(type, guiHelper), -1, -1).setSlotName(type.name) + /** + * @since 26.1.6 + */ + protected fun IRecipeSlotBuilder.setFluidSlot(capacity: Int): IRecipeSlotBuilder = + this.setFluidRenderer(fixCapacity(capacity), false, 16, 16) + protected fun IRecipeSlotBuilder.setSlotBackground(type: HTBackgroundType, capacity: Int): IRecipeSlotBuilder = this - .setBackground(HTJeiDrawables.getSlot(type, guiHelper), -1, -1) - .setSlotName(type.name) - .setFluidRenderer(fixCapacity(capacity), false, 16, 16) + .setSlotBackground(type) + .setFluidSlot(capacity) protected fun IRecipeSlotBuilder.setTankBackground(type: HTBackgroundType, capacity: Int): IRecipeSlotBuilder = this .setBackground(HTJeiDrawables.getTank(type, guiHelper), -1, -1) .setSlotName(type.name) - .setFluidRenderer(fixCapacity(capacity), false, 16, 18 * 3 - 2) + .setFluidSlot(capacity) private fun fixCapacity(capacity: Int): Long = maxOf(capacity, 1).toLong() diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt deleted file mode 100644 index 617c2b9083..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.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.HTDoubleItemToItemRecipe -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 HTDoubleItemToItemRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType -) : HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 6, - 18 * 1, - HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC -) { - override fun setupRecipe( - builder: IRecipeLayoutBuilder, - recipe: HTDoubleItemToItemRecipe.Basic, - focuses: IFocusGroup - ) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.primary) - .setSlotBackground(HTBackgroundType.INPUT) - builder - .addInputSlot(getPosition(2), getPosition(0)) - .add(recipe.secondary) - .setSlotBackground(HTBackgroundType.EXTRA_INPUT) - // output - builder - .addOutputSlot(getPosition(5), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTDoubleItemToItemRecipe.Basic, - focuses: IFocusGroup - ) { - builder.addRecipePlus(getPosition(1)) - builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt new file mode 100644 index 0000000000..acec6253ab --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt @@ -0,0 +1,78 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.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.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +abstract class HTDoubleItemToRecipeCategory>( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType, + codec: MapCodec +) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 6, 18 * 1, codec) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { + // input + setPrimaryInput( + builder + .addInputSlot(getPosition(0), getPosition(0)) + .setSlotBackground(HTBackgroundType.INPUT), + recipe + ) + setSecondaryInput( + builder + .addInputSlot(getPosition(2), getPosition(0)) + .setSlotBackground(HTBackgroundType.EXTRA_INPUT), + recipe + ) + // output + setOutput( + builder + .addOutputSlot(getPosition(5), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT), + recipe + ) + } + + protected abstract fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setOutput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + } + + // Basic // + + class Basic(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTDoubleItemToRecipeCategory( + guiHelper, + recipeType, + HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC + ) { + override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.primary) + } + + override fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.secondary) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.result) + } + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt deleted file mode 100644 index 909fd5d84a..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt +++ /dev/null @@ -1,42 +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.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTFluidToItemRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTFluidToRecipe.BasicItem.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTFluidToRecipe.BasicItem, focuses: IFocusGroup) { - // input - recipe.ingredient.let { - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(it) - .setSlotBackground(HTBackgroundType.INPUT, it.amount) - } - // output - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTFluidToRecipe.BasicItem, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt index b3466e39df..f991bd7e76 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt @@ -2,12 +2,8 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.recipe.id -import hiiragi283.lib.recipe.recipe -import hiiragi283.lib.serialization.codec.HTCodecs import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.ICodecHelper @@ -15,7 +11,6 @@ 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.Recipe /** * [HTRecipeHolder]に基づいた[HTBasicRecipeCategory]の拡張クラスです。 @@ -40,7 +35,7 @@ abstract class HTHolderRecipeCategory( recipeType, width, height, - HTCodecs.mapPair(Recipe.KEY_CODEC.fieldOf(HTConstants.ID), codec).codec() + HTRecipeHolder.codec(codec) ) final override fun setRecipe(builder: IRecipeLayoutBuilder, recipe: HTRecipeHolder, focuses: IFocusGroup) { @@ -59,7 +54,7 @@ abstract class HTHolderRecipeCategory( protected open fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) {} - final override fun getIdentifier(recipe: HTRecipeHolder): Identifier? = recipe.id + final override fun getIdentifier(recipe: HTRecipeHolder): Identifier = recipe.id final override fun getCodec( codecHelper: ICodecHelper, diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt deleted file mode 100644 index d8e17c70e7..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt +++ /dev/null @@ -1,42 +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.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTItemToFluidRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTItemToRecipe.BasicFluid.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTItemToRecipe.BasicFluid, focuses: IFocusGroup) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - recipe.result.let { - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(it) - .setSlotBackground(HTBackgroundType.OUTPUT, it.amount) - } - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTItemToRecipe.BasicFluid, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt deleted file mode 100644 index 449a7365c8..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt +++ /dev/null @@ -1,40 +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.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTItemToItemRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTItemToRecipe.BasicItem.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTItemToRecipe.BasicItem, focuses: IFocusGroup) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTItemToRecipe.BasicItem, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt new file mode 100644 index 0000000000..12c938190b --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt @@ -0,0 +1,135 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTFluidToRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +abstract class HTSingleRecipeCategory>( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType, + codec: MapCodec +) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 4, 18 * 1, codec) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { + // input + setInput( + builder + .addInputSlot(getPosition(0), getPosition(0)) + .setSlotBackground(HTBackgroundType.INPUT), + recipe + ) + // output + setOutput( + builder + .addInputSlot(getPosition(3), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT), + recipe + ) + } + + protected abstract fun setInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setOutput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) { + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) + } + + // FluidToFluid // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class FluidToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTFluidToRecipe.BasicFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicFluid) { + val ingredient: HTFluidIngredient = recipe.ingredient + builder.add(ingredient).setFluidSlot(ingredient.amount) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicFluid) { + val result: HTFluidResult = recipe.result + builder.add(result).setFluidSlot(result.amount) + } + } + + // FluidToItem // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class FluidToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTFluidToRecipe.BasicItem.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItem) { + val ingredient: HTFluidIngredient = recipe.ingredient + builder.add(ingredient).setFluidSlot(ingredient.amount) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItem) { + builder.add(recipe.result) + } + } + + // ItemToFluid // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class ItemToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTItemToRecipe.BasicFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicFluid) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicFluid) { + val result: HTFluidResult = recipe.result + builder.add(result).setFluidSlot(result.amount) + } + } + + // ItemToItem // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class ItemToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory(guiHelper, recipeType, HTItemToRecipe.BasicItem.SIMPLE_CODEC) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItem) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItem) { + builder.add(recipe.result) + } + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt index fa86b474f5..615ac21c94 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt @@ -1,13 +1,14 @@ package hiiragi283.lib.item -import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.item.alchemy.HTPotionHelper import net.minecraft.core.Holder import net.minecraft.core.HolderLookup +import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.alchemy.PotionContents /** * ポーションに基づいた[Item]の拡張クラスです。 @@ -18,8 +19,16 @@ open class HTPotionBasedItem(properties: Properties) : Item(properties), HTSubCreativeTabContents { + override fun getDefaultInstance(): ItemStack { + val stack: ItemStack = super.getDefaultInstance() + stack[DataComponents.POTION_CONTENTS] = PotionContents.EMPTY + return stack + } + override fun getCreatorModId(registries: HolderLookup.Provider, itemStack: ItemStack): String? = - HTPotionHelper.getPotionModId(itemStack) ?: super.getCreatorModId(registries, itemStack) + HTPotionHelper.getPotionId(itemStack) + ?.namespace + ?: super.getCreatorModId(registries, itemStack) // HTSubCreativeTabContents // @@ -32,9 +41,7 @@ open class HTPotionBasedItem(properties: Properties) : .lookupOrThrow(Registries.POTION) .filterFeatures(parameters.enabledFeatures()) .listElements() - .map(::BottledPotionContents) - .map(HTPotionHelper::createItemPatch) - .map { ItemStack(baseItem, 1, it) } + .map { ItemStack(baseItem, 1, HTPotionHelper.createPotionPatch(it)) } .forEach(output::accept) } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt deleted file mode 100644 index 7a33155065..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt +++ /dev/null @@ -1,141 +0,0 @@ -package hiiragi283.lib.item.alchemy - -import com.mojang.serialization.Codec -import com.mojang.serialization.MapCodec -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.Text -import net.minecraft.core.Holder -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.effect.MobEffectInstance -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.Items -import net.minecraft.world.item.alchemy.Potion -import net.minecraft.world.item.alchemy.PotionContents -import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.level.material.Fluids -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidStackTemplate -import net.neoforged.neoforge.fluids.FluidType -import kotlin.jvm.optionals.getOrNull - -/** - * ポーションの中身と瓶の形状を束ねたクラスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@JvmRecord -data class BottledPotionContents @JvmOverloads constructor( - val contents: PotionContents, - val bottleType: HTBottleType = HTBottleType.DEFAULT -) : HTHasText { - companion object { - @JvmField - val MAP_CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - PotionContents.CODEC.fieldOf("contents").forGetter(BottledPotionContents::contents), - HTBottleType.FIELD_CODEC.forGetter(BottledPotionContents::bottleType) - ).apply(instance, ::BottledPotionContents) - } - - @JvmField - val CODEC: Codec = Codec.withAlternative( - MAP_CODEC.codec(), - HTCodecs.holder(Registries.POTION), - ::BottledPotionContents - ) - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - PotionContents.STREAM_CODEC, - BottledPotionContents::contents, - HTBottleType.STREAM_CODEC, - BottledPotionContents::bottleType, - ::BottledPotionContents - ) - } - - @JvmOverloads - constructor( - potion: Holder, - bottleType: HTBottleType = HTBottleType.DEFAULT - ) : this(PotionContents(potion), bottleType) - - /** - * ポーションの値 - */ - val potion: Holder? get() = contents.potion().getOrNull() - - /** - * カスタム色の値 - */ - val customColor: Int? get() = contents.customColor().getOrNull() - - /** - * カスタムエフェクトの一覧 - */ - val customEffects: List get() = contents.customEffects() - - /** - * ポーションも含めたすべてのエフェクトの一覧 - */ - val allEffects: Iterable get() = contents.allEffects - - /** - * 保持しているエフェクトが空かどうか - */ - val isEmpty: Boolean get() = contents == PotionContents.EMPTY || allEffects.none() - - /** - * 保持しているエフェクトが水に一致するかどうか - */ - val isWater: Boolean get() = potion == Potions.WATER && bottleType == HTBottleType.DEFAULT - - /** - * [FluidStackTemplate]に変換します。 - * @param amount 液体量 - * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション - */ - fun toFluidTemplate(amount: Int = FluidType.BUCKET_VOLUME): FluidStackTemplate = when (this.isWater) { - true -> FluidStackTemplate(Fluids.WATER, amount) - - false -> HTPotionFluidAccess.INSTANCE.fluidContent.toTemplate( - amount, - HTPotionHelper.createFluidPatch( - HTPotionFluidAccess.INSTANCE.fluidContent.getOrThrow(), - this@BottledPotionContents - ) - ) - }!! - - /** - * [FluidStack]に変換します。 - * @param amount 液体量 - * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション - */ - fun toFluidStack(amount: Int = FluidType.BUCKET_VOLUME): FluidStack = toFluidTemplate(amount).create() - - /** - * [ItemStackTemplate]に変換します。 - * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ - */ - fun toBucketTemplate(): ItemStackTemplate = when (this.isWater) { - true -> ItemStackTemplate(Items.WATER_BUCKET) - - false -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate( - patch = HTPotionHelper.createItemPatch(this@BottledPotionContents) - ) - }!! - - /** - * [ItemStack]に変換します。 - * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ - */ - fun toBucketStack(): ItemStack = toBucketTemplate().create() - - override fun getText(): Text = contents.getName("${bottleType.asItem().descriptionId}.effect.") -} diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt index 793f91547b..92809feb8f 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt @@ -3,30 +3,21 @@ package hiiragi283.lib.item.alchemy import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.item.HTItemInstanceLike -import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import io.netty.buffer.ByteBuf -import net.minecraft.core.TypedInstance -import net.minecraft.core.component.DataComponentPatch import net.minecraft.network.codec.StreamCodec import net.minecraft.util.StringRepresentable import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.ItemStackTemplate import net.minecraft.world.item.Items -import net.minecraft.world.level.ItemLike /** * ポーション瓶の種類を管理するクラスです。 * @author Hiiragi Tsubasa * @since 26.1.0 */ -enum class HTBottleType : - StringRepresentable, - ItemLike, - HTItemInstanceLike { +enum class HTBottleType : StringRepresentable { DEFAULT, SPLASH, LINGERING @@ -41,22 +32,20 @@ enum class HTBottleType : @JvmField val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() - - @JvmStatic - fun getBottleType(instance: TypedInstance): HTBottleType? = - entries.firstOrNull { instance.`is`(it.asItem()) } - } - - override fun asItem(): Item = when (this) { - DEFAULT -> Items.POTION - SPLASH -> Items.SPLASH_POTION - LINGERING -> Items.LINGERING_POTION } - override fun toTemplate(count: Int, patch: DataComponentPatch): ItemStackTemplate = - ItemStackTemplate(asItem(), count, patch) - - override fun toStack(count: Int, patch: DataComponentPatch): ItemStack = ItemStack(this, count, patch) + val emptyItem: HTSimpleDeferredItem + get() = when (this) { + DEFAULT -> HTPotionFluidAccess.INSTANCE.glassBottle + SPLASH -> HTPotionFluidAccess.INSTANCE.splashBottle + LINGERING -> HTPotionFluidAccess.INSTANCE.lingeringBottle + } + val filledItem: Item + get() = when (this) { + DEFAULT -> Items.POTION + SPLASH -> Items.SPLASH_POTION + LINGERING -> Items.LINGERING_POTION + } override fun getSerializedName(): String = name.lowercase() } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt index cc5fa0f821..2b6ce732a9 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.item.alchemy import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.ragium.api.RagiumAPI /** @@ -17,4 +18,19 @@ interface HTPotionFluidAccess { * Ragiumで登録される液体ポーションのインスタンス */ val fluidContent: HTFluidContent + + /** + * @since 26.1.6 + */ + val glassBottle: HTSimpleDeferredItem + + /** + * @since 26.1.6 + */ + val splashBottle: HTSimpleDeferredItem + + /** + * @since 26.1.6 + */ + val lingeringBottle: HTSimpleDeferredItem } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt deleted file mode 100644 index 03b92af27f..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt +++ /dev/null @@ -1,69 +0,0 @@ -package hiiragi283.lib.item.alchemy - -import hiiragi283.lib.data.DataComponentSetter -import hiiragi283.ragium.api.data.RagiumDataComponents -import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap -import net.minecraft.core.component.DataComponentGetter -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.world.level.material.Fluid - -/** - * 液体ポーションを管理するクラスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -data object HTPotionFluidManager { - /** - * 登録されている[液体][Fluid]の一覧 - */ - @JvmStatic - val handlers: Map field: MutableMap = Object2ObjectLinkedOpenHashMap() - - /** - * 新しい液体ポーションを登録します。 - * @throws IllegalStateException 指定した[fluid]が既に登録されいた場合 - */ - @JvmStatic - fun register(fluid: Fluid, handler: Handler) { - check(handlers.put(fluid, handler) == null) { "Duplicated potion fluid registration: $fluid" } - } - - /** - * 指定した液体からハンドラを取得します。 - * @return 対応するハンドラがない場合は`null` - */ - @JvmStatic - fun getHandler(fluid: Fluid): Handler? = handlers[fluid] - - @JvmStatic - fun getHandlerOrDefault(fluid: Fluid): Handler = getHandler(fluid) ?: Handler.DEFAULT - - // Handler // - - /** - * ポーション瓶の種類を保持するインターフェースです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - interface Handler { - companion object { - @JvmField - val DEFAULT: Handler = object : Handler { - override fun get(getter: DataComponentGetter): HTBottleType? = - getter.get(RagiumDataComponents.BOTTLE_TYPE) - - override fun set(setter: DataComponentSetter, bottleType: HTBottleType) { - setter[RagiumDataComponents.BOTTLE_TYPE] = bottleType - } - } - } - - operator fun get(getter: DataComponentGetter): HTBottleType? - - operator fun set(setter: DataComponentSetter, bottleType: HTBottleType) - - operator fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) { - set(DataComponentSetter(builder), bottleType) - } - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt index 821dc1cc1f..7dcd0c269e 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt @@ -1,148 +1,133 @@ package hiiragi283.lib.item.alchemy -import hiiragi283.lib.data.DataComponentSetter import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.item.ItemInstanceBuilder +import hiiragi283.lib.text.Text import net.minecraft.core.Holder -import net.minecraft.core.TypedInstance import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentPatch import net.minecraft.core.component.DataComponents import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStackTemplate +import net.minecraft.world.item.Items import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.level.material.Fluid -import net.neoforged.neoforge.common.Tags +import net.minecraft.world.level.material.Fluids +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.fluids.FluidType import kotlin.jvm.optionals.getOrNull /** * @author Hiiragi Tsubasa - * @since 26.1.0 + * @since 26.1.6 */ data object HTPotionHelper { - // DataComponentGetter // + const val BOTTLE_AMOUNT: Int = FluidType.BUCKET_VOLUME / 4 + + // Data Component // /** * 指定した[getter]から[PotionContents]を取得します。 * @return 値を保持していない場合は[PotionContents.EMPTY] */ @JvmStatic - fun getPotion(getter: DataComponentGetter): PotionContents = + fun getContents(getter: DataComponentGetter): PotionContents = getter.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY) @JvmStatic - fun setPotion(setter: DataComponentSetter, contents: PotionContents?) { - setter.setOrRemove(DataComponents.POTION_CONTENTS, contents) - } + fun isEmpty(getter: DataComponentGetter): Boolean = getContents(getter).let(::isEmpty) /** - * 指定した[getter]からポーションのMod IDを取得します。 + * 指定した[contents]が空かどうか判定します。 + * @return [contents]が[PotionContents.EMPTY]と同じ場合,またはポーションもカスタムエフェクトもない場合は`true` */ @JvmStatic - fun getPotionModId(getter: DataComponentGetter): String? = getPotion(getter) + fun isEmpty(contents: PotionContents): Boolean = + contents == PotionContents.EMPTY || (contents.potion().isEmpty && contents.customEffects.isEmpty()) + + @JvmStatic + fun hasAnyEffect(getter: DataComponentGetter): Boolean = !getContents(getter).let(::isEmpty) + + // Patch + @JvmStatic + fun createPotionPatch(getter: DataComponentGetter): DataComponentPatch = + getContents(getter).let(::createPotionPatch) + + @JvmStatic + fun createPotionPatch(potion: Holder): DataComponentPatch = createPotionPatch(PotionContents(potion)) + + @JvmStatic + fun createPotionPatch(contents: PotionContents): DataComponentPatch = + buildDataPatch { set(DataComponents.POTION_CONTENTS, contents) } + + // Potion Id + + @JvmStatic + fun getPotionId(getter: DataComponentGetter): Identifier? = getContents(getter).let(::getPotionId) + + @JvmStatic + fun getPotionId(contents: PotionContents): Identifier? = contents .potion() .flatMap(Holder::unwrapKey) .map(ResourceKey::identifier) - .map(Identifier::getNamespace) .getOrNull() + // Name + + @JvmStatic + fun getPotionName(getter: DataComponentGetter, bottleType: HTBottleType): Text = + getPotionName(getContents(getter), bottleType) + + @JvmStatic + fun getPotionName(contents: PotionContents, bottleType: HTBottleType): Text = + contents.getName("${bottleType.filledItem.descriptionId}.effect.") + // ItemStack // + // Filled Bottle + @JvmStatic - fun createPotion(potion: Holder, bottleType: HTBottleType = HTBottleType.DEFAULT): ItemStackTemplate = - ItemInstanceBuilder.buildTemplate { - +bottleType.asItem() - components { set(DataComponents.POTION_CONTENTS, PotionContents(potion)) } - } + fun createFilled(getter: DataComponentGetter, bottleType: HTBottleType): ItemStackTemplate = + createFilled(getContents(getter), bottleType) - /** - * 指定した[contents]からポーションの[ItemStack]を作成します。 - */ @JvmStatic - fun createPotion(contents: BottledPotionContents): ItemStackTemplate = ItemInstanceBuilder.buildTemplate { - +contents.bottleType.asItem() - components { set(DataComponents.POTION_CONTENTS, contents.contents) } - } + fun createFilled(potion: Holder, bottleType: HTBottleType): ItemStackTemplate = + createFilled(PotionContents(potion), bottleType) - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ - @JvmName("getContentsFromItem") @JvmStatic - fun getContents(instance: T): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter { - val bottleType: HTBottleType = HTPotionFluidManager.Handler.DEFAULT[instance] ?: return null - val contents: PotionContents = getPotion(instance) - return BottledPotionContents(contents, bottleType) - } + fun createFilled(contents: PotionContents, bottleType: HTBottleType): ItemStackTemplate = + ItemStackTemplate(bottleType.filledItem, 1, createPotionPatch(contents)) + + // Bucket - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ @JvmStatic - fun getContentsFromBottle( - instance: T - ): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter { - val bottleType: HTBottleType = HTBottleType.getBottleType(instance) ?: return null - val contents: PotionContents = getPotion(instance) - return BottledPotionContents(contents, bottleType) - } + fun createBuket(getter: DataComponentGetter): ItemStackTemplate = getContents(getter).let(::createBuket) + @Suppress("DEPRECATION") @JvmStatic - fun fillItemPatch(contents: BottledPotionContents, builder: DataComponentPatch.Builder) { - val (contents1: PotionContents, bottleType: HTBottleType) = contents - builder.set(DataComponents.POTION_CONTENTS, contents1) - HTPotionFluidManager.Handler.DEFAULT[builder] = bottleType - } + fun createBuket(potion: Holder): ItemStackTemplate = createBuket(PotionContents(potion)) @JvmStatic - fun createItemPatch(contents: BottledPotionContents): DataComponentPatch = - buildDataPatch { fillItemPatch(contents, this) } + fun createBuket(contents: PotionContents): ItemStackTemplate = when { + contents.`is`(Potions.WATER) -> ItemStackTemplate(Items.WATER_BUCKET) + else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate(patch = createPotionPatch(contents))!! + } // FluidStack // - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ - @JvmName("getContentsFromFluid") - @JvmStatic - fun getContents(instance: T): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter = - when { - instance.`is`(Tags.Fluids.WATER) -> BottledPotionContents(Potions.WATER) - - else -> HTPotionFluidManager.getHandlerOrDefault( - instance.typeHolder().value() - )[instance]?.let { bottleType: HTBottleType -> - val contents: PotionContents = getPotion(instance) - BottledPotionContents(contents, bottleType) - } - } - - @JvmStatic - fun fillFluidPatch( - instance: T, - contents: BottledPotionContents, - builder: DataComponentPatch.Builder - ) where T : TypedInstance, T : DataComponentGetter { - fillFluidPatch(instance.typeHolder().value(), contents, builder) - } + @JvmStatic + fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = + createFluid(getContents(getter), amount) + @Suppress("DEPRECATION") @JvmStatic - fun fillFluidPatch(fluid: Fluid, contents: BottledPotionContents, builder: DataComponentPatch.Builder) { - val handler: HTPotionFluidManager.Handler = HTPotionFluidManager.getHandler(fluid) ?: return - val (contents1: PotionContents, bottleType: HTBottleType) = contents - builder.set(DataComponents.POTION_CONTENTS, contents1) - handler[builder] = bottleType - } + fun createFluid(potion: Holder, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = + createFluid(PotionContents(potion), amount) @JvmStatic - fun createFluidPatch(fluid: Fluid, contents: BottledPotionContents): DataComponentPatch = - buildDataPatch { fillFluidPatch(fluid, contents, this) } + fun createFluid(contents: PotionContents, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = when { + contents.`is`(Potions.WATER) -> FluidStack(Fluids.WATER, amount) + else -> HTPotionFluidAccess.INSTANCE.fluidContent.toStack(amount, createPotionPatch(contents)) + } } diff --git a/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt b/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt index 1ab34ab908..62eb1bccc0 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt @@ -15,6 +15,7 @@ import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.item.component.Consumable import net.minecraft.world.item.component.ItemAttributeModifiers +import net.minecraft.world.item.enchantment.ItemEnchantments import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -51,6 +52,22 @@ inline fun buildItemAttributeModifiers( return ItemAttributeModifiers.builder().apply(builderAction).build() } +// ItemEnchantments // + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +inline fun buildItemEnchantments( + parent: ItemEnchantments = ItemEnchantments.EMPTY, + builderAction: ItemEnchantments.Mutable.() -> Unit +): ItemEnchantments { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return ItemEnchantments.Mutable(parent).apply(builderAction).toImmutable() +} + // PotionContents // /** diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt new file mode 100644 index 0000000000..cc9047f802 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt @@ -0,0 +1,64 @@ +package hiiragi283.lib.recipe + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import net.minecraft.world.item.crafting.RecipeHolder + +/** + * [RecipeHolder]を任意のクラスに使えるようにするためのクラスです。 + * @param RECIPE 保持するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +@JvmRecord +data class HTRecipeHolder(val key: RecipeKey, val recipe: RECIPE) { + companion object { + @JvmStatic + fun codec(recipeCodec: MapCodec): Codec> = + HTCodecs.record { instance -> + instance.group( + Recipe.KEY_CODEC.fieldOf(HTConstants.ID).forGetter(HTRecipeHolder::key), + recipeCodec.forGetter(HTRecipeHolder::recipe) + ).apply(instance, ::HTRecipeHolder) + } + } + + constructor(id: Identifier, recipe: RECIPE) : this(RecipeKey(id), recipe) + + constructor(entry: Map.Entry) : this(entry.key, entry.value) + + constructor(pair: Pair) : this(pair.first, pair.second) + + val id: Identifier get() = key.identifier() + + inline fun map(transform: (RECIPE) -> U): HTRecipeHolder = + HTRecipeHolder(this.key, transform(this.recipe)) + + inline fun mapNotNull(transform: (RECIPE) -> U?): HTRecipeHolder? = transform(this.recipe)?.let { + HTRecipeHolder(this.key, it) + } + + inline fun castAs(): HTRecipeHolder? = mapNotNull { it as? U } +} + +// Extensions // + +/** + * [RecipeHolder]を[HTRecipeHolder]に変換します。 + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +val > RecipeHolder.kotlin: HTRecipeHolder + get() = HTRecipeHolder(this.id(), this.value()) + +/** + * [HTRecipeHolder]を[RecipeHolder]に変換します。 + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +val > HTRecipeHolder.java: RecipeHolder + get() = RecipeHolder(this.key, this.recipe) diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt b/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt index 054aaf8cca..b84b834012 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt @@ -6,7 +6,6 @@ import net.minecraft.core.registries.Registries import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey import net.minecraft.world.item.crafting.Recipe -import net.minecraft.world.item.crafting.RecipeHolder // RecipeKey // @@ -37,68 +36,3 @@ fun RecipeKey(namespace: String, vararg path: String): RecipeKey = RecipeKey(nam * @since 26.1.0 */ fun RecipeKey(id: Identifier): RecipeKey = Registries.RECIPE.createKey(id) - -// RecipeHolder // - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -operator fun RecipeHolder<*>.component1(): RecipeKey = this.id() - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -operator fun > RecipeHolder.component2(): R = this.value() - -// HTRecipeHolder // - -/** - * [RecipeHolder]を任意のクラスに使えるようにするためのエイリアスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -typealias HTRecipeHolder = Pair - -/** - * 新しい[HTRecipeHolder]のインスタンスを作成します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun HTRecipeHolder(id: Identifier, recipe: R): HTRecipeHolder = RecipeKey(id) to recipe - -/** - * [RecipeHolder]を[HTRecipeHolder]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun > HTRecipeHolder(holder: RecipeHolder): HTRecipeHolder = holder.id() to holder.value() - -/** - * [HTRecipeHolder]を[RecipeHolder]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun > RecipeHolder(holder: HTRecipeHolder): RecipeHolder = RecipeHolder(holder.key, holder.recipe) - -/** - * [HTRecipeHolder]が保持するレシピのID - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.key: RecipeKey get() = this.first - -/** - * [HTRecipeHolder]が保持するレシピのID - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.id: Identifier get() = this.key.identifier() - -/** - * [HTRecipeHolder]が保持するレシピ - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.recipe: R get() = this.second diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt index 9a11d3f473..8ddd07c456 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt @@ -2,7 +2,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTDoubleItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTDoubleItemToItemRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.serialization.codec.HTCodecs diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt index 3bbc08863e..138434b65b 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt index 732c7e05ee..74aa006c5b 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemAndFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt index 2918297340..6d6e09ea63 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt @@ -2,7 +2,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.recipe.result.createOrEmpty diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt index d02eccd98a..49101c9ba2 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt b/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt deleted file mode 100644 index 84b465ca3b..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt +++ /dev/null @@ -1,102 +0,0 @@ -package hiiragi283.lib.recipe.display - -import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.HTPhysicalSideHelper -import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.fluid.FluidStack -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionFluidManager -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import net.minecraft.core.Holder -import net.minecraft.core.HolderSet -import net.minecraft.core.component.DataComponents -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec -import net.minecraft.util.context.ContextMap -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.alchemy.Potion -import net.minecraft.world.item.alchemy.PotionContents -import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.item.crafting.display.DisplayContentsFactory -import net.minecraft.world.item.crafting.display.SlotDisplay -import net.minecraft.world.level.material.Fluid -import net.minecraft.world.level.material.Fluids -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.crafting.display.ForFluidStacks -import java.util.function.Consumer -import java.util.stream.Stream - -/** - * [Potion]と[HTBottleType]に基づいた[SlotDisplay]の実装クラスです。 - * @param potions 対象となるポーションの一覧 - * @param bottleType 対象となるポーション瓶の種類 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@JvmRecord -data class HTPotionSlotDisplay(val potions: HolderSet, val bottleType: HTBottleType) : SlotDisplay { - companion object { - @JvmField - val CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - HTCodecs.holderSet( - Registries.POTION - ).fieldOf(HTConstants.POTIONS).forGetter(HTPotionSlotDisplay::potions), - HTBottleType.FIELD_CODEC.forGetter(HTPotionSlotDisplay::bottleType) - ).apply(instance, ::HTPotionSlotDisplay) - } - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.holderSet(Registries.POTION), - HTPotionSlotDisplay::potions, - HTBottleType.STREAM_CODEC, - HTPotionSlotDisplay::bottleType, - ::HTPotionSlotDisplay - ) - - @JvmField - val TYPE: SlotDisplay.Type = SlotDisplay.Type(CODEC, STREAM_CODEC) - } - - override fun resolve(context: ContextMap, builder: DisplayContentsFactory): Stream = - when (builder) { - is DisplayContentsFactory.ForStacks -> - potions.stream() - .map { HTPotionHelper.createPotion(it, bottleType) } - .map(ItemStackTemplate::create) - .map(builder::forStack) - - is ForFluidStacks -> - HTPotionFluidManager.handlers - .entries - .stream() - .mapMulti { (fluid: Fluid, handler: HTPotionFluidManager.Handler), consumer: Consumer -> - potions - .filter { it.value().isEnabled(HTPhysicalSideHelper.getFeatureFlags()) } - .map { potion: Holder -> - when (potion) { - Potions.WATER -> FluidStack(Fluids.WATER) - - else -> FluidStack( - fluid, - patch = buildDataPatch { - set(DataComponents.POTION_CONTENTS, PotionContents(potion)) - handler[this] = bottleType - } - ) - } - } - .forEach(consumer) - }.map(builder::forStack) - - else -> Stream.empty() - } - - override fun type(): SlotDisplay.Type = TYPE -} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt index a40ec11e6b..1c227a0c19 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt @@ -63,8 +63,8 @@ data class HTFluidIngredient(val unsized: FluidIngredient, val amount: Int) : override fun getPreviewStacks(contextMap: ContextMap): List = unsized .display() .resolve(contextMap, ForFluidStacks { it.copyWithAmount(amount) }) - .toList() .filter(HTFlowingFluidHelper::isSource) + .toList() } // Extensions // diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt index 5f5dec26c4..1a313b2543 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt @@ -2,72 +2,70 @@ package hiiragi283.lib.recipe.ingredient import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.item.alchemy.BottledPotionContents -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionFluidManager +import hiiragi283.lib.HTPhysicalSideHelper +import hiiragi283.lib.fluid.FluidStack +import hiiragi283.lib.item.alchemy.HTPotionFluidAccess import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.display.HTPotionSlotDisplay import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.util.fold import net.minecraft.core.Holder import net.minecraft.core.HolderSet import net.minecraft.core.registries.Registries import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.alchemy.Potion +import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay import net.minecraft.world.level.material.Fluid +import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.crafting.FluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredientType +import net.neoforged.neoforge.fluids.crafting.display.FluidStackSlotDisplay import java.util.stream.Stream /** - * [HTPotionFluidManager]に基づいて液体ポーションを扱う[FluidIngredient]の実装クラスです。 + * 液体ポーションを扱う[FluidIngredient]の実装クラスです。 * @param potions 対象となるポーションの一覧 - * @param bottleType 対象となるポーション瓶の種類 * @author Hiiragi Tsubasa * @since 26.1.0 */ -data class HTPotionFluidIngredient(val potions: HolderSet, val bottleType: HTBottleType) : FluidIngredient() { +data class HTPotionFluidIngredient(val potions: HolderSet) : FluidIngredient() { companion object { @JvmField - val CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - HTCodecs.holderSet( - Registries.POTION - ).fieldOf(HTConstants.POTIONS).forGetter(HTPotionFluidIngredient::potions), - HTBottleType.FIELD_CODEC.forGetter(HTPotionFluidIngredient::bottleType) - ).apply(instance, ::HTPotionFluidIngredient) - } + val CODEC: MapCodec = HTCodecs.holderSet(Registries.POTION) + .fieldOf(HTConstants.POTIONS) + .xmap(::HTPotionFluidIngredient, HTPotionFluidIngredient::potions) @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.holderSet(Registries.POTION), - HTPotionFluidIngredient::potions, - HTBottleType.STREAM_CODEC, - HTPotionFluidIngredient::bottleType, - ::HTPotionFluidIngredient - ) + val STREAM_CODEC: StreamCodec = + HTStreamCodecs.holderSet(Registries.POTION).map(::HTPotionFluidIngredient, HTPotionFluidIngredient::potions) @JvmField val TYPE: FluidIngredientType = FluidIngredientType(CODEC, STREAM_CODEC) } - constructor(potion: Holder) : this(HolderSet.direct(potion), HTBottleType.DEFAULT) + constructor(potion: Holder) : this(HolderSet.direct(potion)) - override fun test(fluidStack: FluidStack): Boolean { - val contents: BottledPotionContents = HTPotionHelper.getContents(fluidStack) ?: return false - return contents.bottleType == bottleType && contents.potion?.let(potions::contains) ?: false - } + override fun test(fluidStack: FluidStack): Boolean = + HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) @Suppress("DEPRECATION") - override fun generateFluids(): Stream> = HTPotionFluidManager.handlers.keys.stream().map { - it.builtInRegistryHolder() - } + override fun generateFluids(): Stream> = + Stream.of(HTPotionFluidAccess.INSTANCE.fluidContent.sourceHolder) - override fun display(): SlotDisplay = HTPotionSlotDisplay(potions, bottleType) + override fun display(): SlotDisplay = potions + .stream() + .filter { it.value().isEnabled(HTPhysicalSideHelper.getFeatureFlags()) } + .map { potion: Holder -> + when (potion) { + Potions.WATER -> FluidStack(Fluids.WATER) + else -> HTPotionHelper.createFluid(potion) + } + }.map(::FluidStackSlotDisplay) + .toList() + .let(SlotDisplay::Composite) override fun isSimple(): Boolean = false diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt index 02c7ef7b38..25ca57b512 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt @@ -15,7 +15,8 @@ import net.minecraft.world.item.crafting.RecipeType * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTCompoundRecipeLookup private constructor(private val id: Identifier) : HTRecipeLookup { +class HTCompoundRecipeLookup private constructor(private val id: Identifier) : + HTRecipeLookup { companion object { @JvmStatic private val instances: MutableMap> = Object2ObjectLinkedOpenHashMap() @@ -55,14 +56,14 @@ class HTCompoundRecipeLookup private constructor(private val id: Ide * レシピの一覧を追加します。 */ fun addRecipes(vararg recipes: Pair) { - addSubLookup { recipes.asSequence() } + addSubLookup { recipes.asSequence().map(::HTRecipeHolder) } } /** * レシピの一覧を追加します。 */ fun addRecipes(recipes: Map) { - addSubLookup { recipes.asSequence().map { it.toPair() } } + addSubLookup { recipes.asSequence().map(::HTRecipeHolder) } } /** diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt index 5d5229f7e4..c97ec642c2 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt @@ -1,23 +1,31 @@ package hiiragi283.lib.recipe.lookup +import hiiragi283.lib.HTConstants import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.HTRecipePredicate -import hiiragi283.lib.recipe.id -import hiiragi283.lib.recipe.recipe +import hiiragi283.lib.recipe.RecipeKey +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap import net.minecraft.server.level.ServerLevel +import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.common.util.ValueIOSerializable /** * [HTRecipeLookup]に基づいて,取得したレシピをキャッシュするクラスです。 * @param INPUT レシピの入力となるクラス * @param RECIPE 提供するレシピのクラス * @param lookup レシピの提供元 + * @author Hiiragi Tsubasa + * @since 26.1.0 */ class HTRecipeCache>( private val lookup: HTRecipeLookup -) { - private var lastRecipe: HTRecipeHolder? = null +) : ValueIOSerializable { + private var lastRecipe: Either>? = null /** * レシピを取得します。 @@ -53,14 +61,36 @@ class HTRecipeCache>( */ fun findFirstHolder(input: INPUT, context: HTRecipeLookup.Context): HTRecipeHolder? { if (input.isEmpty) return null - if (lastRecipe != null && lastRecipe!!.recipe.matches(input)) { - return lastRecipe + // 現在のキャッシュがレシピIDのみの場合,lookupからレシピを検索して更新 + lastRecipe?.onLeft { lastKey: RecipeKey -> + lookup.getAllRecipes(context) + .firstOrNull { (key: RecipeKey, _) -> lastKey == key } + ?.let { Either.Right(it) } + .let { lastRecipe = it } } - lookup.getAllRecipes(context) - .firstOrNull { (_, recipe) -> recipe.matches(input) } - ?.let(::lastRecipe::set) - return lastRecipe + // 現在のキャッシュがレシピを保持している場合,現在の入力に一致するか判定 + lastRecipe?.onRight { holder: HTRecipeHolder -> + if (holder.recipe.matches(input)) { + return holder + } else { + lastRecipe = null + } + } + // キャッシュがない場合,すべてのレシピから検索する + return lookup.getAllRecipes(context) + .firstOrNull { (_, recipe: RECIPE) -> recipe.matches(input) } + ?.also { lastRecipe = Either.Right(it) } + } + + override fun serialize(output: ValueOutput) { + output.storeNullable(HTConstants.ID, Recipe.KEY_CODEC, getRecipeKey()) } - override fun toString(): String = "HTRecipeCache(lookup=$lookup, lastRecipe=${lastRecipe?.id})" + override fun deserialize(input: ValueInput) { + input.read(HTConstants.ID, Recipe.KEY_CODEC).ifPresent { lastRecipe = Either.Left(it) } + } + + private fun getRecipeKey(): RecipeKey? = lastRecipe?.map(HTRecipeHolder<*>::key)?.unwrap() + + override fun toString(): String = "HTRecipeCache(lookup=$lookup, lastRecipe=${getRecipeKey()})" } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt index 4cb377bdd8..4cc173dd3f 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.recipe.lookup import hiiragi283.lib.recipe.HTRecipeHolder +import hiiragi283.lib.recipe.kotlin import net.minecraft.core.RegistryAccess import net.minecraft.server.level.ServerLevel import net.minecraft.world.item.crafting.Recipe @@ -16,7 +17,7 @@ import net.minecraft.world.item.crafting.RecipeType * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun interface HTRecipeLookup { +fun interface HTRecipeLookup { /** * レシピの一覧を取得します。 */ @@ -42,6 +43,6 @@ fun interface HTRecipeLookup { */ fun > byType( recipeType: RecipeType - ): Sequence> = this.recipeMap.byType(recipeType).asSequence().map(::HTRecipeHolder) + ): Sequence> = this.recipeMap.byType(recipeType).asSequence().map { it.kotlin } } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt new file mode 100644 index 0000000000..baec6483df --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt @@ -0,0 +1,59 @@ +package hiiragi283.lib.recipe.lookup + +import hiiragi283.lib.HTConstants +import hiiragi283.lib.recipe.RecipeKey +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.item.crafting.Recipe +import net.minecraft.world.item.crafting.RecipeHolder +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeManager +import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.common.util.ValueIOSerializable +import java.util.Optional +import kotlin.jvm.optionals.getOrNull + +/** + * [RecipeType]に基づいて,取得したレシピをキャッシュするクラスです。 + * @param INPUT レシピの入力となるクラス + * @param RECIPE 提供するレシピのクラス + * @param recipeType レシピの種類 + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +class HTVanillaRecipeCache>(val recipeType: RecipeType) : + ValueIOSerializable { + private var lastRecipe: Either>? = null + + /** + * [RecipeHolder]を取得します。 + * @param input レシピの入力 + * @param level レシピ取得時のレベル + * @return [input]に一致する最初のレシピ + */ + fun findFirstHolder(input: INPUT, level: ServerLevel): RecipeHolder? { + if (input.isEmpty) return null + val recipeManager: RecipeManager = level.recipeAccess() + val foundRecipe: Optional> = lastRecipe?.fold( + { key: RecipeKey -> recipeManager.getRecipeFor(recipeType, input, level, key) }, + { holder: RecipeHolder -> recipeManager.getRecipeFor(recipeType, input, level, holder) } + ) ?: recipeManager.getRecipeFor(recipeType, input, level) + foundRecipe.ifPresentOrElse({ lastRecipe = Either.Right(it) }, { lastRecipe = null }) + return foundRecipe.getOrNull() + } + + override fun serialize(output: ValueOutput) { + output.storeNullable(HTConstants.ID, Recipe.KEY_CODEC, getRecipeKey()) + } + + override fun deserialize(input: ValueInput) { + input.read(HTConstants.ID, Recipe.KEY_CODEC).ifPresent { lastRecipe = Either.Left(it) } + } + + private fun getRecipeKey(): RecipeKey? = lastRecipe?.map(RecipeHolder<*>::id)?.unwrap() + + override fun toString(): String = "HTVanillaRecipeCache(recipeType=$recipeType, lastRecipe=${getRecipeKey()})" +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt index bfc6015595..2cff7c1f93 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt @@ -4,12 +4,11 @@ import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants import hiiragi283.lib.fluid.HTFlowingFluidHelper -import hiiragi283.lib.item.alchemy.BottledPotionContents +import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.util.DFUEither import hiiragi283.lib.util.fold -import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentPatch @@ -17,6 +16,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.ByteBufCodecs import net.minecraft.network.codec.StreamCodec import net.minecraft.resources.Identifier +import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.level.material.Fluid import net.neoforged.neoforge.common.util.NeoForgeExtraCodecs import net.neoforged.neoforge.fluids.FluidStack @@ -66,7 +66,7 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = - BottledPotionContents.MAP_CODEC.xmap(::PotionEntry, PotionEntry::contents) + MapCodec.assumeMapUnsafe(PotionContents.CODEC).xmap(::PotionEntry, PotionEntry::contents) @JvmField val STREAM_CODEC: StreamCodec = - BottledPotionContents.STREAM_CODEC.map(::PotionEntry, PotionEntry::contents) + PotionContents.STREAM_CODEC.map(::PotionEntry, PotionEntry::contents) @JvmField val TYPE: HTFluidResultType = HTFluidResultType(CODEC, STREAM_CODEC) @@ -162,10 +162,9 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = TYPE - override fun create(amount: Int): FluidStack = contents.toFluidStack(amount) + override fun create(amount: Int): FluidStack = HTPotionHelper.createFluid(contents, amount) - override fun getId(): Identifier = - contents.potion?.getKeyOrThrow()?.identifier() ?: RagiumAPI.id(HTConstants.POTION) + override fun getId(): Identifier? = HTPotionHelper.getPotionId(contents) } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemResult.kt index 239d4e2a71..7850217051 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemResult.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemResult.kt @@ -73,7 +73,7 @@ data class HTItemResult(val entry: Entry, val count: Int) : HTRecipeResult { - fun getId(): Identifier + fun getId(): Identifier? /** * 完成品を取得します。 diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt index 25f49fbb59..36ec672bf1 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt @@ -3,6 +3,7 @@ package hiiragi283.lib.registry import hiiragi283.lib.util.Identity import hiiragi283.lib.util.identity import net.minecraft.resources.Identifier +import net.minecraft.resources.ResourceKey import net.minecraft.world.item.BlockItem import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block @@ -76,7 +77,7 @@ class HTDeferredBlockAndItemRegister( * @param ITEM アイテムのクラス * @param name ブロックとアイテムのIDのパス * @param blockProp ブロックのプロパティ - * @param blockFactory [BlockBehaviour.Properties]からブロックを作るブロック + * @param blockFactory [BlockBehaviour.Properties]から[BLOCK]を作るブロック * @param itemFactory [Item.Properties]と[BLOCK]からアイテムを作るブロック * @param itemProp [Item.Properties]を初期化するブロック * @return 新しい[HTDeferredBlockAndItem]のインスタンス @@ -97,6 +98,48 @@ class HTDeferredBlockAndItemRegister( return HTDeferredBlockAndItem(blockHolder, itemHolder) } + /** + * 新しいブロックとアイテムをまとめて登録します。 + * @param BLOCK ブロックのクラス + * @param name ブロックとアイテムのIDのパス + * @param blockFactory [BLOCK]を作るブロック + * @param itemProp [Item.Properties]を初期化するブロック + * @return 新しい[HTBasicDeferredBlockAndItem]のインスタンス + * @since 26.1.6 + */ + fun registerSimple( + name: String, + blockFactory: (ResourceKey) -> BLOCK, + itemProp: Identity = identity() + ): HTBasicDeferredBlockAndItem = register(name, blockFactory, ::BlockItem, itemProp) + + /** + * 新しいブロックとアイテムをまとめて登録します。 + * @param BLOCK ブロックのクラス + * @param ITEM アイテムのクラス + * @param name ブロックとアイテムのIDのパス + * @param blockFactory [BLOCK]を作るブロック + * @param itemFactory [Item.Properties]と[BLOCK]からアイテムを作るブロック + * @param itemProp [Item.Properties]を初期化するブロック + * @return 新しい[HTDeferredBlockAndItem]のインスタンス + * @since 26.1.6 + */ + fun register( + name: String, + blockFactory: (ResourceKey) -> BLOCK, + itemFactory: ItemWithContextFactory, + itemProp: Identity = identity() + ): HTDeferredBlockAndItem { + val blockHolder: HTDeferredBlock = + blockRegister.register(name) { id: Identifier -> blockFactory(blockRegister.createKey(id)) } + val itemHolder: HTDeferredItem = itemRegister.registerItem( + name, + { prop: Item.Properties -> itemFactory(blockHolder.get(), prop.useBlockDescriptionPrefix()) }, + itemProp + ) + return HTDeferredBlockAndItem(blockHolder, itemHolder) + } + /** * 登録されたブロックの一覧を取得します。 */ diff --git a/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt b/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt index 3d40d8cd0c..b7dbf59976 100644 --- a/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt +++ b/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt @@ -62,6 +62,13 @@ val Identifier.itemId: Identifier get() = when { else -> this.withPrefix("item/") } +/** + * @see Identifier.toDebugFileName + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +val Identifier.debugPath: String get() = this.path.replace('/', '_') + // ResourceKey // /** diff --git a/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt b/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt index 6c0642a50d..44faa21963 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt @@ -34,15 +34,9 @@ data object CommonTagPrefixes { @JvmField val NUGGET = HTTagPrefix("nuggets", "nuggets/%s") - @JvmField - val PLATE = HTTagPrefix("plates", "plates/%s") - @JvmField val RAW_MATERIALS = HTTagPrefix("raw_materials", "raw_materials/%s") - @JvmField - val ROD = HTTagPrefix("rods", "rods/%s") - @JvmField val TINY = HTTagPrefix("tiny", "tiny/%s") } diff --git a/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt b/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt index 7cbbb9f7ec..00eecf0be4 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt @@ -1,7 +1,6 @@ package hiiragi283.lib.tag import hiiragi283.lib.HTConstants -import net.minecraft.resources.Identifier import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block @@ -16,20 +15,11 @@ class HTTagPrefix( private val tagPattern: String, private val childNamespace: String = HTConstants.COMMON ) { - /** - * @since 26.1.4 - */ - constructor( - commonTagId: Identifier, - tagPattern: String, - childNamespace: String = HTConstants.COMMON - ) : this(BlockItemTag(commonTagId), tagPattern, childNamespace) - constructor( commonTagId: String, tagPattern: String, childNamespace: String = HTConstants.COMMON - ) : this(BlockItemTag(HTConstants.COMMON, commonTagId), tagPattern, childNamespace) + ) : this(BlockItemTag(childNamespace, commonTagId), tagPattern, childNamespace) /** * 素材の共通タグを生成します。 diff --git a/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt b/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt index 5605f4ba8d..a0e09285bd 100644 --- a/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt +++ b/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt @@ -1,6 +1,6 @@ package hiiragi283.lib.text -import hiiragi283.lib.color.HTDefaultColor +import net.minecraft.ChatFormatting /** * 翻訳を保持するインターフェースです。 @@ -24,11 +24,11 @@ interface HTTranslation : HTHasTranslationKey { /** * [color]で着色された[テキスト][Text]を返します。 */ - fun translateColored(color: HTDefaultColor): MutableText = translate().withStyle(color) + fun translateColored(color: ChatFormatting): MutableText = translate().withStyle(color) /** * [color]で着色された[テキスト][Text]を返します。 * @param args テキストの引数 */ - fun translateColored(color: HTDefaultColor, vararg args: Any?): MutableText = translate(*args).withStyle(color) + fun translateColored(color: ChatFormatting, vararg args: Any?): MutableText = translate(*args).withStyle(color) } diff --git a/src/lib/kotlin/hiiragi283/lib/text/Texts.kt b/src/lib/kotlin/hiiragi283/lib/text/Texts.kt index 6e6ea5cf9e..98b0066132 100644 --- a/src/lib/kotlin/hiiragi283/lib/text/Texts.kt +++ b/src/lib/kotlin/hiiragi283/lib/text/Texts.kt @@ -1,6 +1,5 @@ package hiiragi283.lib.text -import hiiragi283.lib.color.HTDefaultColor import net.minecraft.core.Direction import net.minecraft.network.chat.Component import net.minecraft.network.chat.MutableComponent @@ -88,10 +87,3 @@ fun levelText(key: ResourceKey): MutableText { * @since 26.1.0 */ fun MutableText.withStyle(color: TextColor): MutableText = this.withStyle { style: Style -> style.withColor(color) } - -/** - * 指定した[色][color]を適応します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun MutableText.withStyle(color: HTDefaultColor): MutableText = this.withStyle(color.textColor) diff --git a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt index 6bcfa85c15..cdf75dd9e5 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt @@ -24,10 +24,10 @@ data object HTDelegates { private var value: T? = null override fun getValue(thisRef: Any?, property: KProperty<*>): T = - value ?: error("Property ${property.name} has not initialized") + value ?: error("Property ${property.name} was not initialized") override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { - check(this.value == null) { "Property ${property.name} has already initialized" } + check(this.value == null) { "Property ${property.name} has already been initialized" } this.value = value } } @@ -44,7 +44,7 @@ data object HTDelegates { override fun getValue(thisRef: Any?, property: KProperty<*>): T = value ?: defaultValue() override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { - check(this.value == null) { "Property ${property.name} has already initialized" } + check(this.value == null) { "Property ${property.name} has already been initialized" } this.value = value } } diff --git a/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt b/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt index 6813290769..953e5957c1 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt @@ -36,13 +36,6 @@ fun Optional>.toMap(): Map = this.toList().toMap() */ fun Optional.fold(empty: () -> R, some: (T) -> R): R = this.map(some).getOrElse(empty) -/** - * @author Hiiragi Tsubasa - * @since 26.1.3 - */ -fun Optional.mapNotNull(transform: (T) -> R?): Optional = - this.flatMap { transform(it).toOptional() } - /** * @author Hiiragi Tsubasa * @since 26.1.3 diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index faa1fa40f9..ffbf47ebd8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -65,71 +65,85 @@ data object RagiumConfig { // Mechanical @JvmField - val assembler: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.ASSEMBLER) + val assembler: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ASSEMBLER) @JvmField - val crusher: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CRUSHER) + val crusher: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CRUSHER) @JvmField - val compressor: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.COMPRESSOR) + val compressor: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.COMPRESSOR) @JvmField - val cuttingMachine: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CUTTING_MACHINE) + val cuttingMachine: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CUTTING_MACHINE) // Heat @JvmField - val freezer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.FREEZER) + val alloySmelter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ALLOY_SMELTER) @JvmField - val melter: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER) + val freezer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.FREEZER) @JvmField - val pyrolyzer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER) + val melter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER) @JvmField - val refinery: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY) + val pyrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER) + + @JvmField + val refinery: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY) + + @JvmField + val smelter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.SMELTER) // Chemical @JvmField - val chemicalBath: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_BATH) + val chemicalBath: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_BATH) @JvmField - val chemicalReactor: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.CHEMICAL_REACTOR - ) + val chemicalReactor: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_REACTOR) @JvmField - val electrolyzer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) + val electrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) @JvmField - val mixer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) + val mixer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) // Bio @JvmField - val brewery: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.BREWERY) + val brewery: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.BREWERY) @JvmField - val planter: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) + val planter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) // Electronics @JvmField - val scanner: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.SCANNER) + val scanner: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.SCANNER) // Arcane @JvmField - val fluidDuplicator: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.FLUID_DUPLICATOR, - 1024 - ) + val fluidDuplicator: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.FLUID_DUPLICATOR, 1024) @JvmField - val massFabricator: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.MASS_FABRICATOR, - 1024 - ) + val massFabricator: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MASS_FABRICATOR, 1024) } init { diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 078adae815..359fab2ee0 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -20,7 +20,7 @@ data object RagiumConstants { const val MELTER = "melter" const val PYROLYZER = "pyrolyzer" const val REFINERY = "refinery" - const val SMELTING = "smelting" + const val SMELTER = "smelter" // Chemical const val CHEMICAL_BATH = "chemical_bath" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index b7ba578d83..248490035f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.data import hiiragi283.lib.data.DataComponentType -import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.ragium.api.RagiumRegistries @@ -19,9 +18,6 @@ import net.neoforged.neoforge.fluids.SimpleFluidContent */ data object RagiumDataComponents { // Item Stack - @JvmField - val BOTTLE_TYPE: DataComponentType = DataComponentType(HTBottleType.CODEC, HTBottleType.STREAM_CODEC) - @JvmField val ENERGY: DataComponentType = DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt similarity index 84% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt index 919c218fc5..1431bf7d96 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemIngredientBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +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.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTElectrolyzingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.ELECTROLYZING) { - override fun getPrimalId(): Identifier = results.first().getId() + override fun getRecipeId(): Identifier? = results.firstOrNull()?.getId() override fun createRecipe(): RTElectrolyzingRecipe = RTElectrolyzingRecipe(itemIngredient, fluidIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt new file mode 100644 index 0000000000..7480492140 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt @@ -0,0 +1,58 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.item.component.buildItemEnchantments +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.registry.getKeyOrThrow +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.HTDelegates +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTEnchantingRecipe +import net.minecraft.core.Holder +import net.minecraft.resources.Identifier +import net.minecraft.world.item.enchantment.Enchantment +import net.minecraft.world.item.enchantment.ItemEnchantments +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTEnchantingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.ENCHANTING) { + override fun getRecipeId(): Identifier? = result.content.mapLeft { it.getKeyOrThrow().identifier() }.leftOrNull() + + override fun createRecipe(): RTEnchantingRecipe = RTEnchantingRecipe(ingredient, result, progressData) + + // Ingredient + @PublishedApi internal var ingredient: HTItemIngredient by HTDelegates.onceInitialize() + + operator fun HTItemIngredient.unaryPlus() { + ingredient = this + } + + inline fun ingredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal var result: RTEnchantingRecipe.EnchantmentResult by HTDelegates.onceInitialize() + + operator fun Holder.unaryPlus() { + result = RTEnchantingRecipe.EnchantmentResult(Either.Left(this)) + } + + operator fun ItemEnchantments.unaryPlus() { + result = RTEnchantingRecipe.EnchantmentResult(Either.Right(this)) + } + + inline fun result(builderAction: ItemEnchantments.Mutable.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +buildItemEnchantments(builderAction = builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt similarity index 86% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt index 32cea224bf..173b4bb9e5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemResultBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTReactingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REACTING) { - override fun getPrimalId(): Identifier = results.map(HTItemResult::getId, HTFluidResult::getId) + override fun getRecipeId(): Identifier? = results.map(HTItemResult::getId, HTFluidResult::getId) override fun createRecipe(): RTReactingRecipe.Basic = RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt similarity index 84% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt index ac74797248..eed2822733 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemResultBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -19,7 +19,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTRefiningRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REFINING) { - override fun getPrimalId(): Identifier = fluidResult.getId() + override fun getRecipeId(): Identifier? = fluidResult.getId() override fun createRecipe(): RTRefiningRecipe = RTRefiningRecipe(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index ea00402ef2..555cf195fb 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -1,13 +1,13 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe - -import hiiragi283.lib.data.recipe.HTDoubleItemToItemRecipeBuilder -import hiiragi283.lib.data.recipe.HTFluidToRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemAndFluidToRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToItemAndFluidRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.data.recipe.builder.HTDoubleItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToItemAndFluidRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTAlloyingRecipe import hiiragi283.ragium.api.recipe.RTAssemblingRecipe @@ -23,7 +23,6 @@ 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.RTSmeltingRecipe import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -126,16 +125,6 @@ data object RagiumRecipeBuilders { return HTItemToRecipeBuilder.ToFluid(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) } - @JvmStatic - inline fun smelting( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.SMELTING, ::RTSmeltingRecipe).apply(builderAction) - } - @JvmStatic inline fun pyrolyzing( builderAction: HTItemToItemAndFluidRecipeBuilder.() -> Unit @@ -211,4 +200,13 @@ data object RagiumRecipeBuilders { } return HTItemToDoubleItemRecipeBuilder(RagiumConstants.PLANTING, ::RTPlantingRecipe).apply(builderAction) } + + // Arcane + @JvmStatic + inline fun enchanting(builderAction: RTEnchantingRecipeBuilder.() -> Unit): RTEnchantingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTEnchantingRecipeBuilder().apply(builderAction) + } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt index b877015af0..129f5ea401 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt @@ -88,7 +88,6 @@ enum class HTItemPart( GEM("%s", CommonTagPrefixes.GEM, HTLangPatternProvider.IDENTITY), INGOT("%s_ingot", CommonTagPrefixes.INGOT, "%s Ingot", "%sインゴット"), NUGGET("%s_nugget", CommonTagPrefixes.NUGGET, "%s Nugget", "%sナゲット"), - PLATE("%s_plate", CommonTagPrefixes.PLATE, "%s Plate", "%sの板"), RAW("raw_%s", CommonTagPrefixes.RAW_MATERIALS, "Raw %s", "%sの原石"), TINY("tiny_%s", CommonTagPrefixes.TINY, "Tiny %s", "小さな%s") ; diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt new file mode 100644 index 0000000000..bdd1511f30 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt @@ -0,0 +1,103 @@ +package hiiragi283.ragium.api.recipe + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.data.buildDataPatch +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.component.buildItemEnchantments +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap +import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponents +import net.minecraft.core.registries.Registries +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.Items +import net.minecraft.world.item.crafting.Ingredient +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.enchantment.Enchantment +import net.minecraft.world.item.enchantment.ItemEnchantments + +@JvmRecord +data class RTEnchantingRecipe( + val ingredient: HTItemIngredient, + val result: EnchantmentResult, + override val progressData: HTProgressData +) : HTDoubleItemToItemRecipe, + HTProgressRecipe.Simple, + HTSerializableRecipe { + companion object { + @JvmField + val BOOK_INGREDIENT = HTItemIngredient(Ingredient.of(Items.BOOK), 1) + + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTItemIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(RTEnchantingRecipe::ingredient), + EnchantmentResult.CODEC.fieldOf(HTConstants.RESULT).forGetter(RTEnchantingRecipe::result), + HTProgressData.CODEC.forGetter(RTEnchantingRecipe::progressData) + ).apply(instance, ::RTEnchantingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTItemIngredient.STREAM_CODEC, + RTEnchantingRecipe::ingredient, + EnchantmentResult.STREAM_CODEC, + RTEnchantingRecipe::result, + HTProgressData.STREAM_CODEC, + RTEnchantingRecipe::progressData, + ::RTEnchantingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + } + + override fun test(first: ItemInstance, second: ItemInstance): Boolean = + BOOK_INGREDIENT.test(first) && ingredient.test(second) + + override fun apply(first: ItemInstance, second: ItemInstance): ItemStack = result.create() + + override fun getRequiredAmount(first: ItemInstance, second: ItemInstance): Pair = + BOOK_INGREDIENT.getRequiredAmount(first) to ingredient.getRequiredAmount(second) + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ENCHANTING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.ENCHANTING + + // EnchantmentResult // + + @JvmRecord + data class EnchantmentResult(val content: Either, ItemEnchantments>) { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.mapEither( + HTCodecs.holder(Registries.ENCHANTMENT).fieldOf(HTConstants.ID), + ItemEnchantments.CODEC.fieldOf("enchantments") + ).xmap(::EnchantmentResult, EnchantmentResult::content) + + @JvmField + val STREAM_CODEC: StreamCodec = HTStreamCodecs + .either(HTStreamCodecs.holder(Registries.ENCHANTMENT), ItemEnchantments.STREAM_CODEC) + .map(::EnchantmentResult, EnchantmentResult::content) + } + + fun create(): ItemStack = content + .mapLeft { holder: Holder -> buildItemEnchantments { set(holder, holder.value().maxLevel) } } + .unwrap() + .let { buildDataPatch { set(DataComponents.STORED_ENCHANTMENTS, it) } } + .let { ItemStack(Items.ENCHANTED_BOOK, 1, it) } + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt deleted file mode 100644 index 177ffcb75e..0000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt +++ /dev/null @@ -1,24 +0,0 @@ -package hiiragi283.ragium.api.recipe - -import hiiragi283.lib.recipe.HTRecipeType -import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTItemToRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTItemResult -import net.minecraft.world.item.crafting.RecipeSerializer -import net.minecraft.world.item.crafting.SingleRecipeInput - -class RTSmeltingRecipe(ingredient: HTItemIngredient, result: HTItemResult, progressData: HTProgressData) : - HTItemToRecipe.BasicItem(ingredient, result, progressData), - HTSerializableRecipe { - companion object { - @JvmField - val SERIALIZER: RecipeSerializer = - RecipeSerializer(codec(::RTSmeltingRecipe), streamCodec(::RTSmeltingRecipe)) - } - - override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.SMELTING - - override fun getType(): HTRecipeType = RagiumRecipeTypes.SMELTING -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index fd3ba2c94f..c37cbb7bdb 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -89,4 +89,6 @@ data object RagiumRecipeLookups { // Electronics // Arcane + @JvmField + val ENCHANTING: HTRecipeLookup = create(RagiumRecipeTypes.ENCHANTING) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index b37f963a44..ccf6df41bb 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -74,10 +74,6 @@ data object RagiumRecipeSerializers { val MELTING: RecipeSerializer = register(RagiumConstants.MELTING, RTMeltingRecipe.SERIALIZER) - @JvmField - val SMELTING: RecipeSerializer = - register(RagiumConstants.SMELTING, RTSmeltingRecipe.SERIALIZER) - @JvmField val PYROLYZING: RecipeSerializer = register(RagiumConstants.PYROLYZING, RTPyrolyzingRecipe.SERIALIZER) @@ -115,4 +111,7 @@ data object RagiumRecipeSerializers { // Electronics // Arcane + @JvmField + val ENCHANTING: RecipeSerializer = + register(RagiumConstants.ENCHANTING, RTEnchantingRecipe.SERIALIZER) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 06bed4edaa..1890c0b0b0 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -57,9 +57,6 @@ data object RagiumRecipeTypes { @JvmField val MELTING: HTRecipeType = create(RagiumConstants.MELTING) - @JvmField - val SMELTING: HTRecipeType = create(RagiumConstants.SMELTING) - @JvmField val PYROLYZING: HTRecipeType = create(RagiumConstants.PYROLYZING) @@ -89,4 +86,6 @@ data object RagiumRecipeTypes { // Electronics // Arcane + @JvmField + val ENCHANTING: HTRecipeType = create(RagiumConstants.ENCHANTING) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt index 55f3bab05f..d731110bf5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt @@ -25,7 +25,7 @@ enum class HTMachineType(langName: HTLangName) : companion object { @JvmField - val PREFIX = HTTagPrefix(RagiumAPI.id("machines"), "machines/%s", RagiumAPI.MOD_ID) + val PREFIX = HTTagPrefix("machines", "machines/%s", RagiumAPI.MOD_ID) } override val materialName: String get() = name.lowercase() diff --git a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt index 29aec4d7ed..452ca5fcf9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt @@ -2,13 +2,11 @@ package hiiragi283.ragium.api.util import hiiragi283.lib.capability.HTEnergyCapabilities import hiiragi283.lib.capability.HTFluidCapabilities -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.item.ItemStack import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.HTTextUtil import hiiragi283.lib.text.Text -import hiiragi283.lib.text.withStyle import hiiragi283.lib.transfer.HTResourceView import hiiragi283.lib.transfer.energy.HTEnergyHandler import hiiragi283.lib.util.fixedFraction @@ -186,7 +184,7 @@ data object HTStorageHelper { .identifier() .namespace .let(HTTextUtil::getModNameText) - .withStyle(HTDefaultColor.BLUE) + .withStyle(ChatFormatting.BLUE) .withStyle(ChatFormatting.ITALIC) .let(consumer::accept) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 323919c805..1b19ca2271 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -11,7 +11,6 @@ import hiiragi283.lib.item.HTCreativeModeTabHelper import hiiragi283.lib.mod.HTCommonMod import hiiragi283.lib.network.HTPayloadHandlers import hiiragi283.lib.recipe.HTRecipeType -import hiiragi283.lib.recipe.display.HTPotionSlotDisplay import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -39,6 +38,7 @@ import hiiragi283.ragium.common.item.RagiumItems import hiiragi283.ragium.common.item.alchemy.RagiumPotions import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket +import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponentMap import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries @@ -59,6 +59,7 @@ import net.neoforged.neoforge.registries.DataPackRegistryEvent import net.neoforged.neoforge.registries.NeoForgeRegistries import net.neoforged.neoforge.registries.RegisterEvent import net.neoforged.neoforge.transfer.access.ItemAccess +import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler @Mod(RagiumAPI.MOD_ID) data object Ragium : HTCommonMod() { @@ -104,7 +105,6 @@ data object Ragium : HTCommonMod() { ) } event.register(Registries.DATA_COMPONENT_TYPE) { helper -> - helper.register(RagiumAPI.id(HTConstants.BOTTLE_TYPE), RagiumDataComponents.BOTTLE_TYPE) helper.register(RagiumAPI.id(HTConstants.ENERGY), RagiumDataComponents.ENERGY) helper.register(RagiumAPI.id(HTConstants.FLUID), RagiumDataComponents.FLUID) helper.register(RagiumAPI.id("memory_disc_data"), RagiumDataComponents.MEMORY_DISC_DATA) @@ -125,9 +125,6 @@ data object Ragium : HTCommonMod() { helper.register(recipeType.keyOrThrow, recipeType) } } - event.register(Registries.SLOT_DISPLAY) { helper -> - helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionSlotDisplay.TYPE) - } event.register(NeoForgeRegistries.Keys.FLUID_INGREDIENT_TYPES) { helper -> helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionFluidIngredient.TYPE) @@ -166,14 +163,17 @@ data object Ragium : HTCommonMod() { } } } + event.modify(RagiumBlocks.CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> + builder.set(DataComponents.RARITY, Rarity.EPIC) + } // Item - event.modify(Items.RAW_COPPER) { builder, provider, _ -> + event.modify(Items.RAW_COPPER) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.COPPER)) } - event.modify(Items.RAW_IRON) { builder, provider, _ -> + event.modify(Items.RAW_IRON) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.IRON)) } - event.modify(Items.RAW_GOLD) { builder, provider, _ -> + event.modify(Items.RAW_GOLD) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.GOLD)) } } @@ -215,12 +215,19 @@ data object Ragium : HTCommonMod() { registerProcessor(RagiumBlockEntityTypes.COMPRESSOR.get()) registerProcessor(RagiumBlockEntityTypes.CUTTING_MACHINE.get()) + registerProcessor(RagiumBlockEntityTypes.ALLOY_SMELTER.get()) registerProcessor(RagiumBlockEntityTypes.FREEZER.get()) registerProcessor(RagiumBlockEntityTypes.MELTER.get()) + registerProcessor(RagiumBlockEntityTypes.SMELTER.get()) registerProcessor(RagiumBlockEntityTypes.CHEMICAL_BATH.get()) registerProcessor(RagiumBlockEntityTypes.BREWERY.get()) + // Storage + helper.registerBlockEntity( + HTEnergyCapabilities.block, + RagiumBlockEntityTypes.CREATIVE_BATTERY.get() + ) { _, _ -> InfiniteEnergyHandler.INSTANCE } } override fun registerPayload(registrar: PayloadRegistrar) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 67538d846e..d098454130 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -4,30 +4,30 @@ import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.collection.asSequence import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.getOrPut -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections -import hiiragi283.lib.item.alchemy.HTPotionFluidManager +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.lookup.fromRecipeType import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.registry.getOrNull import hiiragi283.lib.resource.modifyPath -import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.util.identity +import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.fluid.RagiumFluids -import hiiragi283.ragium.common.recipe.RTLingeringBrewingRecipe -import hiiragi283.ragium.common.recipe.RTSplashBrewingRecipe +import hiiragi283.ragium.common.recipe.RTPotionBottleDrainingRecipe +import hiiragi283.ragium.common.recipe.RTPotionBottleFillingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.core.Holder import net.minecraft.core.HolderSet import net.minecraft.core.RegistryAccess import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.resources.ResourceKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionBrewing import net.minecraft.world.item.crafting.Ingredient @@ -47,16 +47,12 @@ internal data object RagiumCommon { fun initialize(event: FMLCommonSetupEvent) { event.enqueueWork(::initFluidInteractions) event.enqueueWork(::initRecipeLookups) - - event.enqueueWork { - HTPotionFluidManager.register(RagiumFluids.POTION.getOrThrow(), HTPotionFluidManager.Handler.DEFAULT) - } } private fun initFluidInteractions() { // Convert lava source/flow into concrete by dye liquid // FlowingFluid#isRandomlyTicking を true に - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { FluidInteractionRegistry.addInteraction( NeoForgeMod.LAVA_TYPE.value(), FluidInteractionRegistry.InteractionInformation( @@ -92,6 +88,23 @@ internal data object RagiumCommon { RagiumRecipeLookups.BREWING.fromRecipeType(RagiumRecipeTypes.BREWING, identity()) RagiumRecipeLookups.PLANTING.fromRecipeType(RagiumRecipeTypes.PLANTING, identity()) // runtime recipes + RagiumRecipeLookups.DRAINING.addRecipes( + HTBottleType.entries.associate { bottleType: HTBottleType -> + Pair( + RecipeKey(RagiumAPI.id("/${RagiumConstants.DRAINING}/potion_bottle/${bottleType.serializedName}")), + RTPotionBottleDrainingRecipe(bottleType) + ) + } + ) + RagiumRecipeLookups.FILLING.addRecipes( + HTBottleType.entries.associate { bottleType: HTBottleType -> + Pair( + RecipeKey(RagiumAPI.id("/${RagiumConstants.FILLING}/potion_bottle/${bottleType.serializedName}")), + RTPotionBottleFillingRecipe(bottleType) + ) + } + ) + RagiumRecipeLookups.BATHING.addSubLookup { (_, registries: RegistryAccess) -> val oxygen: HolderSet.Named = registries.getOrNull(RagiumFluids.OXYGEN.fluidTag) ?: return@addSubLookup sequenceOf() @@ -173,9 +186,5 @@ internal data object RagiumCommon { }.build() } } - RagiumRecipeLookups.BREWING.addRecipes( - RecipeKey(vanillaId("/${RagiumConstants.BREWING}/splash_potion")) to RTSplashBrewingRecipe, - RecipeKey(vanillaId("/${RagiumConstants.BREWING}/lingering_potion")) to RTLingeringBrewingRecipe - ) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt index c11d7abdb3..7af4906497 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt @@ -19,7 +19,7 @@ data object RagiumAdvancementKeys { // Mechanical @JvmField - val MECHANICAL_MACHINE_CASING: AdvancementKey = create("mechanical_machine_casing") + val MECHANICAL_MACHINE_PARTS: AdvancementKey = create("mechanical_machine_parts") @JvmField val ASSEMBLER: AdvancementKey = create(RagiumConstants.ASSEMBLER) @@ -29,7 +29,7 @@ data object RagiumAdvancementKeys { // Heat @JvmField - val HEAT_MACHINE_CASING: AdvancementKey = create("heat_machine_casing") + val HEAT_MACHINE_PARTS: AdvancementKey = create("heat_machine_parts") @JvmField val ALLOY_SMELTER: AdvancementKey = create(RagiumConstants.ALLOY_SMELTER) @@ -45,7 +45,7 @@ data object RagiumAdvancementKeys { // Chemical @JvmField - val CHEMICAL_MACHINE_CASING: AdvancementKey = create("chemical_machine_casing") + val CHEMICAL_MACHINE_PARTS: AdvancementKey = create("chemical_machine_parts") @JvmField val CHEMICAL_BATH: AdvancementKey = create(RagiumConstants.CHEMICAL_BATH) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 6a75e095a0..c4743f000d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -6,12 +6,14 @@ import hiiragi283.lib.collection.buildListMultiMap import hiiragi283.lib.collection.buildSortedSetMultiMap import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.flatMapTable +import hiiragi283.lib.collection.mutableEnumMapOf import hiiragi283.lib.registry.HTBasicDeferredBlockAndItem import hiiragi283.lib.registry.HTDeferredBlockAndItemRegister import hiiragi283.lib.registry.HTDeferredBlockEntityType import hiiragi283.lib.registry.HTDeferredBlockRegister import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTOreBlockPart import hiiragi283.ragium.api.material.HTStorageBlockPart @@ -54,14 +56,27 @@ data object RagiumBlocks { .requiresCorrectToolForDrops() .sound(SoundType.COPPER) + @JvmStatic + private fun registerMachine( + type: HTDeferredBlockEntityType<*>, + factory: (HTDeferredBlockEntityType<*>, BlockBehaviour.Properties) -> BLOCK, + properties: BlockBehaviour.Properties = machine() + ): HTBasicDeferredBlockAndItem = + REGISTER.registerSimple(type.idOrThrow.path, { factory(type, properties.setId(it)) }) + @JvmStatic private fun registerMachine( type: HTDeferredBlockEntityType<*>, properties: BlockBehaviour.Properties = machine() + ): HTBasicDeferredBlockAndItem = registerMachine(type, ::HTMachineBlock, properties) + + @JvmStatic + private fun registerFakeMachine( + name: String, + properties: BlockBehaviour.Properties = machine() ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - type.idOrThrow.path, - properties, - { prop: BlockBehaviour.Properties -> HTMachineBlock(type, prop) } + name, + { HTMachineBlock(RagiumBlockEntityTypes.CRUSHER, properties.setId(it)) } // TODO ) // Ingredient // @@ -83,8 +98,7 @@ data object RagiumBlocks { material, REGISTER.registerSimple( part.createName(material), - properties, - blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), it) } + blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) } ) ) } @@ -128,13 +142,16 @@ data object RagiumBlocks { // Mechanical @JvmField - val ASSEMBLER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.ASSEMBLER) + val ASSEMBLER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ASSEMBLER) @JvmField - val CRUSHER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.CRUSHER) + val CRUSHER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.CRUSHER) @JvmField - val COMPRESSOR: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.COMPRESSOR) + val COMPRESSOR: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.COMPRESSOR) @JvmField val CUTTING_MACHINE: HTBasicDeferredBlockAndItem = @@ -142,21 +159,60 @@ data object RagiumBlocks { // Heat @JvmField - val FREEZER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.FREEZER) + val ALLOY_SMELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ALLOY_SMELTER) @JvmField - val MELTER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.MELTER) + val FREEZER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.FREEZER) + + @JvmField + val MELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.MELTER) + + @JvmField + val PYROLYZER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.PYROLYZER) + + @JvmField + val REFINERY: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.REFINERY) + + @JvmField + val SMELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.SMELTER) // Chemical @JvmField val CHEMICAL_BATH: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.CHEMICAL_BATH) + @JvmField + val CHEMICAL_REACTOR: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.CHEMICAL_REACTOR) + + @JvmField + val ELECTROLYZER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.ELECTROLYZER) + + @JvmField + val MIXER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.MIXER) + // Bio @JvmField - val BREWERY: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.BREWERY) + val BREWERY: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.BREWERY) + + @JvmField + val PLANTER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.PLANTER) // Electronics + @JvmField + val SCANNER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.SCANNER) + // Arcane @JvmField @@ -167,11 +223,41 @@ data object RagiumBlocks { put(HTMachineType.MECHANICAL, COMPRESSOR) put(HTMachineType.MECHANICAL, CUTTING_MACHINE) + put(HTMachineType.HEAT, ALLOY_SMELTER) put(HTMachineType.HEAT, FREEZER) put(HTMachineType.HEAT, MELTER) + put(HTMachineType.HEAT, PYROLYZER) + put(HTMachineType.HEAT, REFINERY) + put(HTMachineType.HEAT, SMELTER) put(HTMachineType.CHEMICAL, CHEMICAL_BATH) + put(HTMachineType.CHEMICAL, CHEMICAL_REACTOR) + put(HTMachineType.CHEMICAL, ELECTROLYZER) + put(HTMachineType.CHEMICAL, MIXER) put(HTMachineType.BIO, BREWERY) + put(HTMachineType.BIO, PLANTER) + + put(HTMachineType.ELECTRONICS, SCANNER) + } + + // Storage // + + @JvmField + val CREATIVE_BATTERY: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.CREATIVE_BATTERY, ::HTBasicEntityBlock) + + // Decoration // + + @JvmField + val MACHINE_CASING: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple("machine_casing", machine()) + + @JvmField + val MACHINE_CASINGS: Map = HTMachineType.entries + .associateWithTo(mutableEnumMapOf()) { machineType: HTMachineType -> + REGISTER.registerSimple("${machineType.materialName}_machine_casing", machine()) } + + @JvmStatic + fun getCasing(machineType: HTMachineType): HTSimpleDeferredBlockAndItem = MACHINE_CASINGS[machineType]!! } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt index e2d8289bdc..c0e707aabf 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -7,6 +7,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.common.block.HTBasicEntityBlock import hiiragi283.ragium.common.block.RagiumBlocks +import hiiragi283.ragium.common.block.entity.machine.HTAlloySmelterBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTAssemblerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTBreweryBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTChemicalBathBlockEntity @@ -15,6 +16,8 @@ import hiiragi283.ragium.common.block.entity.machine.HTCrusherBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCuttingMachineBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTFreezerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTMelterBlockEntity +import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity +import hiiragi283.ragium.common.block.entity.storage.HTCreativeBatteryBlockEntity import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.entity.BlockEntityType import net.neoforged.bus.api.IEventBus @@ -56,6 +59,10 @@ data object RagiumBlockEntityTypes { registerTick(RagiumConstants.CUTTING_MACHINE, ::HTCuttingMachineBlockEntity) // Heat + @JvmField + val ALLOY_SMELTER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.ALLOY_SMELTER, ::HTAlloySmelterBlockEntity) + @JvmField val FREEZER: HTDeferredBlockEntityType = registerTick(RagiumConstants.FREEZER, ::HTFreezerBlockEntity) @@ -64,6 +71,10 @@ data object RagiumBlockEntityTypes { val MELTER: HTDeferredBlockEntityType = registerTick(RagiumConstants.MELTER, ::HTMelterBlockEntity) + @JvmField + val SMELTER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.SMELTER, ::HTSmelterBlockEntity) + // Chemical @JvmField val CHEMICAL_BATH: HTDeferredBlockEntityType = @@ -77,6 +88,12 @@ data object RagiumBlockEntityTypes { // Electronics // Arcane + // Storage // + + @JvmField + val CREATIVE_BATTERY: HTDeferredBlockEntityType = + registerTick("creative_battery", ::HTCreativeBatteryBlockEntity) + // Event // // Supported Blocks diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt new file mode 100644 index 0000000000..6554c80f84 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt @@ -0,0 +1,23 @@ +package hiiragi283.ragium.common.block.entity.machine + +import hiiragi283.lib.sounds.HTSoundInstance +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RagiumRecipeLookups +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.machine.base.HTDoubleItemToItemBlockEntity +import net.minecraft.core.BlockPos +import net.minecraft.sounds.SoundEvents +import net.minecraft.world.level.block.state.BlockState + +class HTAlloySmelterBlockEntity(pos: BlockPos, state: BlockState) : + HTDoubleItemToItemBlockEntity( + RagiumBlockEntityTypes.ALLOY_SMELTER.get(), + RagiumRecipeLookups.ALLOYING, + pos, + state + ) { + override fun getCompletedSound(): HTSoundInstance = HTSoundInstance(SoundEvents.FIRE_EXTINGUISH) + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.alloySmelter +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt index 975bf5d0ef..bacb327a11 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.HTConstants import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.handler.HTInputSlot import hiiragi283.lib.recipe.handler.HTOutputSlot @@ -19,17 +20,30 @@ import net.minecraft.core.BlockPos import net.minecraft.server.level.ServerLevel import net.minecraft.sounds.SoundEvents import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.transfer.transaction.Transaction class HTBreweryBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.BREWERY.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.BREWING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { - private val cache: HTRecipeCache = - HTRecipeCache(RagiumRecipeLookups.BREWING) private val inputSlot: HTInputSlot.SingleItem by lazy { HTInputSlot.SingleItem(this@HTBreweryBlockEntity.inputSlot) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt index c6bc0490d1..3a7f28cc69 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -24,16 +25,29 @@ import net.minecraft.server.level.ServerLevel import net.minecraft.sounds.SoundEvents import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.transfer.transaction.Transaction class HTMelterBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.MELTER.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.MELTING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { - private val cache: HTRecipeCache = - HTRecipeCache(RagiumRecipeLookups.MELTING) private val inputSlot: HTInputSlot.SingleItem by lazy { HTInputSlot.SingleItem(this@HTMelterBlockEntity.inputSlot) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt new file mode 100644 index 0000000000..6e60fd2ad0 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt @@ -0,0 +1,167 @@ +package hiiragi283.ragium.common.block.entity.machine + +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.HTItemToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.handler.HTInputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlot +import hiiragi283.lib.recipe.ingredient.HTIngredientHelper +import hiiragi283.lib.recipe.lookup.HTVanillaRecipeCache +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.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.gui.widget.HTItemWidget +import hiiragi283.ragium.common.transfer.holder.HTBasicItemSlotHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.server.level.ServerLevel +import net.minecraft.sounds.SoundEvents +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.AbstractCookingRecipe +import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.item.crafting.SingleRecipeInput +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.transfer.transaction.Transaction + +class HTSmelterBlockEntity(pos: BlockPos, state: BlockState) : + HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.SMELTER.get(), pos, state) { + private val smeltingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.SMELTING) + private val blastingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.BLASTING) + private val smokingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.SMOKING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + val child: ValueOutput = output.child(HTConstants.LAST_RECIPE) + child.putChild("smelting", smeltingCache) + child.putChild("blasting", blastingCache) + child.putChild("smoking", smokingCache) + } + + override fun readUpdateTag(input: ValueInput) { + super.readUpdateTag(input) + input.child(HTConstants.LAST_RECIPE).ifPresent { child: ValueInput -> + child.readChild("smelting", smeltingCache) + child.readChild("blasting", blastingCache) + child.readChild("smoking", smokingCache) + } + } + + override fun initializeVariables(listener: Runnable) { + super.initializeVariables(listener) + recipeHandler = object : EnergizedHandler() { + private val inputSlot: HTInputSlot.SingleItem by lazy { + HTInputSlot.SingleItem(this@HTSmelterBlockEntity.inputSlot) + } + private val outputSlot: HTOutputSlot by lazy { + HTOutputSlot.SingleItem(this@HTSmelterBlockEntity.outputSlot) + } + + override fun createInput(): SingleRecipeInput = SingleRecipeInput(inputSlot.getStack()) + + override fun findRecipe(level: ServerLevel, input: SingleRecipeInput): HTItemToItemRecipe? { + val stackIn: ItemStack = typeSlot.getStackCopy() + val cache: HTVanillaRecipeCache = when { + stackIn.`is`(Items.BLAST_FURNACE) -> blastingCache + stackIn.`is`(Items.SMOKER) -> smokingCache + else -> smeltingCache + } + return cache.findFirstHolder(input, level)?.value()?.let(::wrapRecipe) + } + + private fun wrapRecipe(recipe: AbstractCookingRecipe): HTItemToItemRecipe = object : HTItemToItemRecipe { + override fun test(input: ItemInstance): Boolean = + HTIngredientHelper.unwrap(input).let(recipe.input()::test) + + override fun apply(input: ItemInstance): ItemStack = + HTIngredientHelper.unwrap(input).let(::SingleRecipeInput).let(recipe::assemble) + + override fun getRequiredAmount(input: ItemInstance): Int = when { + test(input) -> 1 + else -> 0 + } + + override fun getProgressData(input: SingleRecipeInput): HTProgressData = + HTProgressData.time(recipe.cookingTime()) + } + + override fun canComplete(recipe: HTItemToItemRecipe, input: SingleRecipeInput, output: ItemStack): Boolean { + val inputCount: Int = recipe.getRequiredAmount(input.item()) + return inputCount != 0 && useTransaction { transaction: Transaction -> + when { + !inputSlot.canExtract(inputCount, transaction) -> false + else -> outputSlot.canInsert(output, transaction) + } + } + } + + override fun onComplete(recipe: HTItemToItemRecipe, input: SingleRecipeInput, output: ItemStack) { + val inputCount: Int = recipe.getRequiredAmount(input.item()) + useTransaction { transaction: Transaction -> + if (inputCount > 0) { + inputSlot.extract(inputCount, transaction) + } + outputSlot.insert(output, transaction) + transaction.commit() + } + playSound(SoundEvents.FIRE_EXTINGUISH) + } + } + } + + private lateinit var inputSlot: HTBasicItemSlot + private lateinit var typeSlot: HTBasicItemSlot + private lateinit var outputSlot: HTBasicItemSlot + + override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { + inputSlot = builder.addSlot(HTSlotInfo.INPUT, HTBasicItemSlot.input(listener)) + typeSlot = builder.addSlot(HTSlotInfo.NONE, HTBasicItemSlot.input(listener, limit = 1)) + outputSlot = builder.addSlot(HTSlotInfo.OUTPUT, HTBasicItemSlot.output(listener)) + } + + override fun setupMenu(widgetHolder: HTWidgetHolder) { + super.setupMenu(widgetHolder) + addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(2.5), HTSlotHelper.getSlotPosY(1)) + // progress + addProgressBar(widgetHolder) + // inputs + widgetHolder += HTItemWidget.Container( + inputSlot, + 0, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.INPUT + ) + widgetHolder.track(inputSlot) + widgetHolder += HTItemWidget.Container( + typeSlot, + 1, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(2), + HTBackgroundType.NONE + ) + widgetHolder.track(typeSlot) + // output + widgetHolder += HTItemWidget.Container( + outputSlot, + 2, + HTSlotHelper.getSlotPosX(6), + HTSlotHelper.getSlotPosY(1), + HTBackgroundType.OUTPUT + ) + widgetHolder.track(outputSlot) + } + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.smelter +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt index 08d4e6e009..234427cb4e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -23,6 +24,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTDoubleItemToItemBlockEntity( @@ -38,6 +41,16 @@ abstract class HTDoubleItemToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt index 4c397d4b20..4c8673d47a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -24,6 +25,8 @@ import net.minecraft.server.level.ServerLevel import net.minecraft.world.item.ItemStack import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemAndFluidToItemBlockEntity( @@ -39,6 +42,16 @@ abstract class HTItemAndFluidToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt index 8fc0b5df44..b0734ffa42 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -21,6 +22,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemToDoubleItemBlockEntity( @@ -36,6 +39,16 @@ abstract class HTItemToDoubleItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt index 303e9ed9ae..b8526b020e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -21,6 +22,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemToItemBlockEntity( @@ -36,6 +39,16 @@ abstract class HTItemToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt new file mode 100644 index 0000000000..62c427eb06 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt @@ -0,0 +1,27 @@ +package hiiragi283.ragium.common.block.entity.storage + +import hiiragi283.lib.capability.HTEnergyCapabilities +import hiiragi283.ragium.common.block.entity.HTBlockEntity +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import net.minecraft.core.BlockPos +import net.minecraft.core.Direction +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.transfer.energy.EnergyHandlerUtil +import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler + +class HTCreativeBatteryBlockEntity(worldPosition: BlockPos, blockState: BlockState) : + HTBlockEntity(RagiumBlockEntityTypes.CREATIVE_BATTERY.get(), worldPosition, blockState) { + + override fun onUpdateServer(level: ServerLevel, pos: BlockPos, state: BlockState): Boolean { + for (direction: Direction in Direction.entries) { + EnergyHandlerUtil.move( + InfiniteEnergyHandler.INSTANCE, + HTEnergyCapabilities.getCapability(level, pos.relative(direction), direction.opposite), + Int.MAX_VALUE, + null + ) + } + return false + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt index 4d08750914..ad20756569 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt @@ -1,19 +1,19 @@ package hiiragi283.ragium.common.fluid -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.fluid.HTFluidType import hiiragi283.lib.item.HTItemDropHelper import net.minecraft.core.BlockPos import net.minecraft.network.chat.TextColor import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.ItemStack import net.minecraft.world.level.Level import net.minecraft.world.phys.Vec3 import net.neoforged.neoforge.fluids.FluidStack -class HTDyedFluidType(private val color: HTDefaultColor, properties: Properties) : HTFluidType(properties) { - override fun getNameColor(stack: FluidStack): TextColor = color.textColor +class HTDyedFluidType(private val color: DyeColor, properties: Properties) : HTFluidType(properties) { + override fun getNameColor(stack: FluidStack): TextColor = TextColor.fromRgb(color.textColor) override fun onVaporize(entity: LivingEntity?, level: Level, pos: BlockPos, stack: FluidStack) { super.onVaporize(entity, level, pos, stack) diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt index d7920e0f52..fe89e331c2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt @@ -1,15 +1,14 @@ package hiiragi283.ragium.common.fluid import hiiragi283.lib.fluid.HTFluidType +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.text.Text import net.minecraft.world.item.ItemStack import net.neoforged.neoforge.fluids.FluidStack class HTPotionFluidType(properties: Properties) : HTFluidType(properties) { - override fun getDescription(stack: FluidStack): Text = - HTPotionHelper.getContents(stack)?.getText() ?: super.getDescription() + override fun getDescription(stack: FluidStack): Text = HTPotionHelper.getPotionName(stack, HTBottleType.DEFAULT) - override fun getBucket(stack: FluidStack): ItemStack = - HTPotionHelper.getContents(stack)?.toBucketStack() ?: super.getBucket(stack) + override fun getBucket(stack: FluidStack): ItemStack = HTPotionHelper.createBuket(stack).create() } diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index d45aa08d1d..47bba7a2ea 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.common.fluid import hiiragi283.lib.HTConstants import hiiragi283.lib.color.HTColoredCollection -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTFluidContentRegister import hiiragi283.lib.resource.toId @@ -15,6 +14,7 @@ import hiiragi283.ragium.common.item.component.RagiumConsumables import net.minecraft.core.component.DataComponents import net.minecraft.sounds.SoundEvent import net.minecraft.sounds.SoundEvents +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.level.pathfinder.PathType import net.neoforged.bus.api.IEventBus @@ -75,7 +75,7 @@ data object RagiumFluids { } @JvmField - val DYES: HTColoredCollection = HTColoredCollection { color: HTDefaultColor -> + val DYES: HTColoredCollection = HTColoredCollection { color: DyeColor -> val name: String = color.serializedName REGISTER.registerFlowing("${name}_dye") { properties = liquid() @@ -212,11 +212,8 @@ data object RagiumFluids { properties = liquid() } - // 5th @JvmField - val MOLTEN_STEEL: HTFluidContent.Virtual = REGISTER.registerVirtual("molten_steel") { - properties = molten() - } + val BLEACH: HTFluidContent.Virtual = REGISTER.registerVirtual("bleach") { properties = liquid() } // Other @JvmField diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt index f9e2f18604..593d12ebad 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.common.item import hiiragi283.lib.item.HTPotionBasedItem +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.text.Text import hiiragi283.lib.text.translatableText @@ -15,12 +16,12 @@ class HTPotionBucketItem(properties: Properties) : HTPotionBasedItem(properties) constructor(content: Fluid, properties: Properties) : this(properties) override fun getName(stack: ItemStack): Text { - val potionName: Text = HTPotionHelper.getContents(stack)?.getText() ?: return super.getName(stack) + val potionName: Text = HTPotionHelper.getPotionName(stack, HTBottleType.DEFAULT) return translatableText(super.descriptionId, potionName) } class BucketHandler(itemAccess: ItemAccess) : HTCustomBucketItemHandler(itemAccess) { override fun getResourceFrom(accessResource: ItemResource, index: Int): FluidResource = - HTPotionHelper.getContents(accessResource)?.toFluidTemplate().let(FluidResource::of) + HTPotionHelper.createFluid(accessResource).let(FluidResource::of) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 94ecfbc42e..418d13a24d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -13,6 +13,7 @@ import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.item.component.RagiumToolMaterials +import net.minecraft.world.item.HoneycombItem import net.minecraft.world.item.Item import net.minecraft.world.item.Rarity import net.neoforged.bus.api.IEventBus @@ -122,6 +123,14 @@ data object RagiumItems { val SYNTHETIC_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_fiber") // Bio + @JvmField + val BEESWAX: HTSimpleDeferredItem = REGISTER.registerItem("beeswax", ::HoneycombItem) + + @JvmField + val SPLASH_BOTTLE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("splash_bottle") + + @JvmField + val LINGERING_BOTTLE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("lingering_bottle") // Electronics @@ -138,13 +147,13 @@ data object RagiumItems { // Parts // @JvmField - val MACHINE_CASINGS: Map = HTMachineType.entries + val MACHINE_PARTS: Map = HTMachineType.entries .associateWithTo(mutableEnumMapOf()) { machineType: HTMachineType -> - REGISTER.registerSimpleItem("${machineType.materialName}_machine_casing") + REGISTER.registerSimpleItem("${machineType.materialName}_machine_parts") } @JvmStatic - fun getCasing(machineType: HTMachineType): HTSimpleDeferredItem = MACHINE_CASINGS[machineType]!! + fun getParts(machineType: HTMachineType): HTSimpleDeferredItem = MACHINE_PARTS[machineType]!! // Mechanical diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt b/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt index f23f40431f..ab24bad401 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt @@ -2,8 +2,15 @@ package hiiragi283.ragium.common.item.alchemy import hiiragi283.lib.item.alchemy.HTPotionFluidAccess import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.vanillaId import hiiragi283.ragium.common.fluid.RagiumFluids +import hiiragi283.ragium.common.item.RagiumItems class RagiumPotionFluidAccess : HTPotionFluidAccess { override val fluidContent: HTFluidContent get() = RagiumFluids.POTION + + override val glassBottle: HTSimpleDeferredItem = HTSimpleDeferredItem(vanillaId("glass_bottle")) + override val splashBottle: HTSimpleDeferredItem get() = RagiumItems.SPLASH_BOTTLE + override val lingeringBottle: HTSimpleDeferredItem get() = RagiumItems.LINGERING_BOTTLE } diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt deleted file mode 100644 index cc18847a65..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt +++ /dev/null @@ -1,35 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.item.alchemy.BottledPotionContents -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import net.minecraft.world.item.ItemInstance -import net.minecraft.world.item.Items -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTLingeringBrewingRecipe : HTItemAndFluidToFluidRecipe { - override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { - !first.`is`(Items.DRAGON_BREATH) -> false - HTPotionHelper.getContents(second)?.bottleType != HTBottleType.SPLASH -> false - else -> second.amount() >= FluidType.BUCKET_VOLUME - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack { - val contents: BottledPotionContents = HTPotionHelper.getContents(second) ?: return FluidStack.EMPTY - if (!contents.isWater && contents.isEmpty) return FluidStack.EMPTY - return contents.copy(bottleType = HTBottleType.LINGERING).toFluidStack() - } - - override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = - when (test(first, second)) { - true -> 1 to FluidType.BUCKET_VOLUME - false -> 0 to 0 - } - - override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt new file mode 100644 index 0000000000..9c21ff5cd6 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt @@ -0,0 +1,30 @@ +package hiiragi283.ragium.common.recipe + +import hiiragi283.lib.item.alchemy.HTBottleType +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.result.HTItemAndFluidResult +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.crafting.SingleRecipeInput + +@JvmRecord +data class RTPotionBottleDrainingRecipe(val bottleType: HTBottleType, override val progressData: HTProgressData) : + HTItemToItemAndFluidRecipe, + HTProgressRecipe.Simple { + constructor(bottleType: HTBottleType) : this(bottleType, HTProgressData.time(60)) + + override fun test(input: ItemInstance): Boolean = + input.`is`(bottleType.filledItem) && HTPotionHelper.hasAnyEffect(input) + + override fun apply(input: ItemInstance): HTItemAndFluidResult = HTItemAndFluidResult( + bottleType.emptyItem.toStack(), + HTPotionHelper.createFluid(input, HTPotionHelper.BOTTLE_AMOUNT) + ) + + override fun getRequiredAmount(input: ItemInstance): Int = when { + test(input) -> 1 + else -> 0 + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt new file mode 100644 index 0000000000..4aea2ca51f --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt @@ -0,0 +1,33 @@ +package hiiragi283.ragium.common.recipe + +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.alchemy.HTBottleType +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.neoforged.neoforge.fluids.FluidInstance + +@JvmRecord +data class RTPotionBottleFillingRecipe(val bottleType: HTBottleType, override val progressData: HTProgressData) : + HTItemAndFluidToItemRecipe, + HTProgressRecipe.Simple { + constructor(bottleType: HTBottleType) : this(bottleType, HTProgressData.time(60)) + + override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { + !first.`is`(bottleType.emptyItem) -> false + !HTPotionHelper.hasAnyEffect(second) -> false + else -> second.amount() >= HTPotionHelper.BOTTLE_AMOUNT + } + + override fun apply(first: ItemInstance, second: FluidInstance): ItemStack = + ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(second)) + + override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = when { + test(first, second) -> 1 to HTPotionHelper.BOTTLE_AMOUNT + else -> 0 to 0 + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt deleted file mode 100644 index 4f54d41c13..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt +++ /dev/null @@ -1,35 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.item.alchemy.BottledPotionContents -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import net.minecraft.world.item.ItemInstance -import net.neoforged.neoforge.common.Tags -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTSplashBrewingRecipe : HTItemAndFluidToFluidRecipe { - override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { - !first.`is`(Tags.Items.GUNPOWDERS) -> false - HTPotionHelper.getContents(second)?.bottleType != HTBottleType.DEFAULT -> false - else -> second.amount() >= FluidType.BUCKET_VOLUME - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack { - val contents: BottledPotionContents = HTPotionHelper.getContents(second) ?: return FluidStack.EMPTY - if (!contents.isWater && contents.isEmpty) return FluidStack.EMPTY - return contents.copy(bottleType = HTBottleType.SPLASH).toFluidStack() - } - - override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = - when (test(first, second)) { - true -> 1 to FluidType.BUCKET_VOLUME - false -> 0 to 0 - } - - override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt b/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt index 8e2eb5a025..fe927fc0a9 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt @@ -1,18 +1,18 @@ package hiiragi283.ragium.common.transfer.holder import com.mojang.serialization.Codec -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.ChatFormatting import net.minecraft.util.StringRepresentable -enum class HTSlotInfo(val canInsert: Boolean, val canExtract: Boolean, val color: HTDefaultColor) : +enum class HTSlotInfo(val canInsert: Boolean, val canExtract: Boolean, val color: ChatFormatting) : StringRepresentable { - BOTH(true, true, HTDefaultColor.PURPLE), - INPUT(true, false, HTDefaultColor.RED), - OUTPUT(false, true, HTDefaultColor.LIGHT_BLUE), - EXTRA_INPUT(true, false, HTDefaultColor.YELLOW), - EXTRA_OUTPUT(false, true, HTDefaultColor.GREEN), - NONE(false, false, HTDefaultColor.GRAY) + BOTH(true, true, ChatFormatting.LIGHT_PURPLE), + INPUT(true, false, ChatFormatting.RED), + OUTPUT(false, true, ChatFormatting.BLUE), + EXTRA_INPUT(true, false, ChatFormatting.YELLOW), + EXTRA_OUTPUT(false, true, ChatFormatting.GREEN), + NONE(false, false, ChatFormatting.GRAY) ; companion object { diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/arcane.png b/src/main/resources/assets/ragium/textures/block/machine/arcane_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/arcane.png rename to src/main/resources/assets/ragium/textures/block/machine/arcane_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/bio.png b/src/main/resources/assets/ragium/textures/block/machine/bio_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/bio.png rename to src/main/resources/assets/ragium/textures/block/machine/bio_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/chemical.png b/src/main/resources/assets/ragium/textures/block/machine/chemical_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/chemical.png rename to src/main/resources/assets/ragium/textures/block/machine/chemical_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/electronics.png b/src/main/resources/assets/ragium/textures/block/machine/electronics_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/electronics.png rename to src/main/resources/assets/ragium/textures/block/machine/electronics_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine/heat_front.png b/src/main/resources/assets/ragium/textures/block/machine/heat_front.png new file mode 100644 index 0000000000..f68bbd06be Binary files /dev/null and b/src/main/resources/assets/ragium/textures/block/machine/heat_front.png differ diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/heat.png b/src/main/resources/assets/ragium/textures/block/machine/heat_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/heat.png rename to src/main/resources/assets/ragium/textures/block/machine/heat_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png b/src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png new file mode 100644 index 0000000000..fe1ed6dc1d Binary files /dev/null and b/src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png differ diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/mechanical.png b/src/main/resources/assets/ragium/textures/block/machine/mechanical_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/mechanical.png rename to src/main/resources/assets/ragium/textures/block/machine/mechanical_side.png diff --git a/src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png deleted file mode 100644 index 102146c30f..0000000000 Binary files a/src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png and /dev/null differ diff --git a/src/main/resources/assets/ragium/textures/item/beeswax.png b/src/main/resources/assets/ragium/textures/item/beeswax.png new file mode 100644 index 0000000000..120acad29a Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/beeswax.png differ diff --git a/src/main/resources/assets/ragium/textures/item/blank_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/blank_shape_pattern.png deleted file mode 100644 index 0161b4ff78..0000000000 Binary files a/src/main/resources/assets/ragium/textures/item/blank_shape_pattern.png and /dev/null differ diff --git a/src/main/resources/assets/ragium/textures/item/block_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/block_shape_pattern.png deleted file mode 100644 index 699dfcdd80..0000000000 Binary files a/src/main/resources/assets/ragium/textures/item/block_shape_pattern.png and /dev/null differ diff --git a/src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png deleted file mode 100644 index d2fe44e85c..0000000000 Binary files a/src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png and /dev/null differ diff --git a/src/main/resources/assets/ragium/textures/item/machine_casing.png b/src/main/resources/assets/ragium/textures/item/machine_parts.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/machine_casing.png rename to src/main/resources/assets/ragium/textures/item/machine_parts.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/arcane.png b/src/main/resources/assets/ragium/textures/item/parts/arcane.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/arcane.png rename to src/main/resources/assets/ragium/textures/item/parts/arcane.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/bio.png b/src/main/resources/assets/ragium/textures/item/parts/bio.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/bio.png rename to src/main/resources/assets/ragium/textures/item/parts/bio.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/chemical.png b/src/main/resources/assets/ragium/textures/item/parts/chemical.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/chemical.png rename to src/main/resources/assets/ragium/textures/item/parts/chemical.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/electronics.png b/src/main/resources/assets/ragium/textures/item/parts/electronics.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/electronics.png rename to src/main/resources/assets/ragium/textures/item/parts/electronics.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/heat.png b/src/main/resources/assets/ragium/textures/item/parts/heat.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/heat.png rename to src/main/resources/assets/ragium/textures/item/parts/heat.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/mechanical.png b/src/main/resources/assets/ragium/textures/item/parts/mechanical.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/mechanical.png rename to src/main/resources/assets/ragium/textures/item/parts/mechanical.png diff --git a/src/main/resources/assets/ragium/textures/item/petrolatum.png b/src/main/resources/assets/ragium/textures/item/petrolatum.png deleted file mode 100644 index 429f978d59..0000000000 Binary files a/src/main/resources/assets/ragium/textures/item/petrolatum.png and /dev/null differ