diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 4f8e444835..9154657d93 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.client import hiiragi283.lib.HTConstants +import hiiragi283.lib.capability.HTFluidCapabilities import hiiragi283.lib.event.HTRegisterWidgetRendererEvent import hiiragi283.lib.fluid.FluidStackTintSource import hiiragi283.lib.fluid.HTFluidModelRegister @@ -8,8 +9,12 @@ import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.mod.HTClientMod import hiiragi283.lib.network.HTPayloadHandlers import hiiragi283.lib.resource.vanillaId +import hiiragi283.lib.text.HTCommonTranslation +import hiiragi283.lib.text.Text +import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper +import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper +import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.gui.screen.tooltip.HTMemoryDiscClientTooltipComponent import hiiragi283.ragium.client.gui.widget.HTEnergySlotWidgetRenderer @@ -25,9 +30,11 @@ import hiiragi283.ragium.common.gui.widget.RagiumWidgetTypes import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket +import net.minecraft.ChatFormatting import net.minecraft.client.resources.model.sprite.Material import net.minecraft.util.ARGB import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.ItemStack import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus import net.neoforged.fml.ModContainer @@ -36,9 +43,14 @@ import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent import net.neoforged.neoforge.client.event.EntityRenderersEvent import net.neoforged.neoforge.client.event.RegisterClientTooltipComponentFactoriesEvent import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent +import net.neoforged.neoforge.client.fluid.FluidTintSources import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent +import net.neoforged.neoforge.common.tooltip.TooltipLocation +import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.transfer.fluid.FluidResource import java.awt.Color +import java.util.function.Consumer @Mod(value = RagiumAPI.MOD_ID, dist = [Dist.CLIENT]) data object RagiumClient : HTClientMod() { @@ -46,6 +58,7 @@ data object RagiumClient : HTClientMod() { eventBus.addListener { event: RegisterClientTooltipComponentFactoriesEvent -> event.register(HTMemoryDiscTooltipComponent::class.java, ::HTMemoryDiscClientTooltipComponent) } + eventBus.addListener(::registerTooltipAppenders) configScreen(container) } @@ -112,6 +125,10 @@ data object RagiumClient : HTClientMod() { transparent() colorTint(Color(0x003399)) } + register.register(RagiumFluids.NITROGEN) { + transparent() + colorTint(Color(0x009999)) + } register.register(RagiumFluids.OXYGEN) { transparent() colorTint(Color(0x3399cc)) @@ -121,6 +138,10 @@ data object RagiumClient : HTClientMod() { colorTint(Color(0x99cc33)) } + register.register(RagiumFluids.CARBON_DIOXIDE) { + transparent() + colorTint(Color(0x336699)) + } register.register(RagiumFluids.WOOD_TAR) { molten() colorTint(Color(0x663333)) @@ -170,6 +191,10 @@ data object RagiumClient : HTClientMod() { colorTint(Color(0x33cc66)) } + register.register(RagiumFluids.SALT_WATER) { + dull() + tintSource = FluidTintSources.water() + } register.register(RagiumFluids.NAOH_SOLUTION) { dull() colorTint(Color(0x003366)) @@ -202,12 +227,9 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0xccff99)) } - - register.register(RagiumFluids.ORE_SLURRY) { - still = Material(vanillaId(HTConstants.BLOCK, "white_concrete_powder")) - tintSource = FluidStackTintSource { stack: FluidStack -> - ARGB.opaque(HTOreSlurryDataHelper.getData(stack)?.color ?: 0x333300) - } + register.register(RagiumFluids.CAOH_SOLUTION) { + dull() + colorTint(Color(0x333399)) } } @@ -219,4 +241,53 @@ data object RagiumClient : HTClientMod() { event.registerBlockEntityRenderer(RagiumBlockEntityTypes.TANK.get(), ::HTTankBlockEntityRenderer) event.registerBlockEntityRenderer(RagiumBlockEntityTypes.CREATIVE_TANK.get(), ::HTTankBlockEntityRenderer) } + + @JvmStatic + private fun registerTooltipAppenders(event: RegisterTooltipAppendersEvent) { + event.registerAppender( + TooltipLocation.HEAD + ) { stack: ItemStack, _, _, _, _, builder: Consumer -> + if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender + val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender + val isCreative: Boolean = stack.`is`(RagiumTags.BlockItem.STORAGES_CREATIVE.item) + // Fluid Name + val resource: FluidResource = view.resource + when { + resource.isEmpty -> HTCommonTranslation.EMPTY.translateColored(ChatFormatting.RED) + + isCreative -> HTCommonTranslation.STORED.translateColored( + ChatFormatting.LIGHT_PURPLE, + resource.hoverName, + ChatFormatting.GRAY, + HTCommonTranslation.INFINITE + ) + + else -> HTCommonTranslation.STORED_MB.translateColored( + ChatFormatting.LIGHT_PURPLE, + resource.hoverName, + ChatFormatting.GRAY, + view.amount + ) + }.let(builder::accept) + // Tank Capacity + when (isCreative) { + true -> HTCommonTranslation.CAPACITY.translateColored( + ChatFormatting.BLUE, + ChatFormatting.GRAY, + HTCommonTranslation.INFINITE + ) + + false -> HTCommonTranslation.CAPACITY_MB.translateColored( + ChatFormatting.BLUE, + ChatFormatting.GRAY, + view.currentCapacity + ) + }.let(builder::accept) + } + event.registerAppender( + TooltipLocation.HEAD + ) { stack: ItemStack, _, _, _, _, builder: Consumer -> + HTClientChemicalHelper.addToTooltip(stack, builder::accept) + } + } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt index 5b18ca0607..83d507b374 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt @@ -1,7 +1,9 @@ package hiiragi283.ragium.client.event import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.text.Text import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper import hiiragi283.ragium.common.fluid.RagiumFluids import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.SubscribeEvent @@ -14,8 +16,12 @@ data object RagiumClientEventHandler { @SubscribeEvent fun onFluidTooltip(event: FluidTooltipEvent) { val stack: FluidStack = event.fluidStack + val appender: (Text) -> Unit = event.toolTip::add + // Potion Fluid if (RagiumFluids.POTION.isOf(stack)) { - HTPotionHelper.getContents(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) + HTPotionHelper.getContents(stack).addToTooltip(event.context, appender, event.flags, stack) } + // Chemical Tooltip + HTClientChemicalHelper.addToTooltip(stack, appender) } } 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 320d59f597..330a8f9328 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -17,9 +17,7 @@ import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.registry.asHolderSequence import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper +import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen @@ -28,6 +26,7 @@ import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCateg import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTRefiningRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTResourceExtractingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTWashingRecipeCategory import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.recipe.RTPotionBottleDrainingRecipe @@ -45,15 +44,12 @@ import mezz.jei.api.registration.IRecipeCategoryRegistration import mezz.jei.api.registration.IRecipeRegistration import mezz.jei.api.registration.ISubtypeRegistration import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack 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 -import net.neoforged.neoforge.fluids.crafting.display.FluidTagSlotDisplay @JeiPlugin class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { @@ -75,15 +71,12 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { .map(Holder::value) .forEach { item: Item -> if (item is HTPotionBasedItem) { - registration.registerSubtypeInterpreter(item) { stack: ItemStack, _ -> - HTPotionHelper.getContents(stack) - } + registration.registerFromDataComponentTypes(item, DataComponents.POTION_CONTENTS) } } - // Ore Slurry Bucket - registration.registerSubtypeInterpreter(RagiumFluids.ORE_SLURRY.bucketHolder.get()) { stack: ItemStack, _ -> - HTOreSlurryDataHelper.getData(stack) - } + + // Creative Tank + registration.registerFromDataComponentTypes(RagiumBlocks.CREATIVE_TANK.asItem(), RagiumDataComponents.FLUID) } override fun registerFluidSubtypes( @@ -94,10 +87,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { NeoForgeTypes.FLUID_STACK, RagiumFluids.POTION.getOrThrow() ) { stack: FluidStack, _ -> HTPotionHelper.getContents(stack) } - registration.registerSubtypeInterpreter( - NeoForgeTypes.FLUID_STACK, - RagiumFluids.ORE_SLURRY.getOrThrow() - ) { stack: FluidStack, _ -> HTOreSlurryDataHelper.getHolder(stack) } } override fun registerIngredients(registration: IModIngredientRegistration) { @@ -112,13 +101,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { .map(HTPotionHelper::createFluid) .toList() ) - registration.addExtraIngredients( - NeoForgeTypes.FLUID_STACK, - HTPhysicalSideHelper.registryOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .asHolderSequence() - .map(HTOreSlurryDataHelper::createFluid) - .toList() - ) } override fun registerCategories(registration: IRecipeCategoryRegistration) { @@ -143,6 +125,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { RTElectrolyzingRecipeCategory(guiHelper), HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MIXING), RTReactingRecipeCategory(guiHelper), + RTWashingRecipeCategory(guiHelper), // Bio HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BREWING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING), @@ -169,17 +152,18 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.REFINING, RagiumRecipeLookups.REFINING) // Chemical HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BATHING, RagiumRecipeLookups.BATHING) - HTJeiRecipeHelper.addRecipes( - registration, - RagiumJeiRecipeTypes.ELECTROLYZING, - RagiumRecipeLookups.ELECTROLYZING - ) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.MIXING, RagiumRecipeLookups.MIXING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.REACTING, RagiumRecipeLookups.REACTING) + HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.WASHING, RagiumRecipeLookups.WASHING) // Bio HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BREWING, RagiumRecipeLookups.BREWING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PLANTING, RagiumRecipeLookups.PLANTING) // Electronics + HTJeiRecipeHelper.addRecipes( + registration, + RagiumJeiRecipeTypes.ELECTROLYZING, + RagiumRecipeLookups.ELECTROLYZING + ) HTJeiRecipeHelper.addRecipes( registration, RagiumJeiRecipeTypes.RESOURCE_EXTRACTING, @@ -235,34 +219,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { }.toList() ) // Chemical - registration.addRecipes( - RagiumJeiRecipeTypes.MIXING, - listItems() - .mapNotNull { input: Holder -> - 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(result) } - recipeId replace input.getKeyOrThrow().identifier().withPrefix("solving/") - }.buildSynthetic() - }.toList() - ) - - registration.addRecipes( - RagiumJeiRecipeTypes.REACTING, - HTPhysicalSideHelper.registryOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .asHolderSequence() - .map { holder: Holder -> - RagiumRecipeBuilders.reacting { - primaryIngredient = HTJeiRecipeHelper.fakeFluid(HTOreSlurryDataHelper.createFluid(holder)) - secondaryIngredient = HTJeiRecipeHelper.fakeFluid(FluidTagSlotDisplay(Tags.Fluids.WATER)) - +holder.value().result - recipeId replace holder.getKeyOrThrow().identifier().withPrefix("ore_slurry/") - }.buildSynthetic() - }.toList() - ) } override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { @@ -283,12 +239,12 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { // 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 + registration.addCraftingStation(RagiumJeiRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) registration.addCraftingStation(RagiumJeiRecipeTypes.ASSEMBLING, RagiumBlocks.PRECISION_ASSEMBLER) // Arcane registration.addCraftingStation(RagiumJeiRecipeTypes.ENCHANTING, RagiumBlocks.ENCHANTER) 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 e27fd82fb2..f3a83b6643 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.integration.jei.HTJeiRecipeType +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -13,6 +14,7 @@ import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe +import hiiragi283.ragium.api.recipe.RTWashingRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.block.RagiumBlocks @@ -69,8 +71,8 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) @JvmField - val ELECTROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + val CENTRIFUGING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.CENTRIFUGING, RagiumBlocks.CHEMICAL_BATH) @JvmField val MIXING: HTHolderJeiRecipeType = @@ -80,6 +82,10 @@ data object RagiumJeiRecipeTypes { val REACTING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) + @JvmField + val WASHING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.WASHING, RagiumBlocks.MACHINE_CASING) + // Bio @JvmField val BREWING: HTHolderJeiRecipeType = @@ -90,6 +96,10 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics + @JvmField + val ELECTROLYZING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + @JvmField val RESOURCE_EXTRACTING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.RESOURCE_EXTRACTING, 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 54949a7bfe..1b2a91bd9d 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 @@ -16,7 +16,7 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( guiHelper, RagiumJeiRecipeTypes.ELECTROLYZING, - 18 * 8, + 18 * 6, 18 * 1, RTElectrolyzingRecipe.CODEC ) { @@ -24,16 +24,11 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : // inputs builder .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.fluidIngredient) + .add(recipe.ingredient) .setSlotBackground(HTBackgroundType.INPUT) - val itemInput: IRecipeSlotBuilder = builder.addInputSlot( - getPosition(2), - getPosition(0) - ).setSlotBackground(HTBackgroundType.INPUT) - recipe.itemIngredient.ifPresent(itemInput::add) // outputs val outputSlots: Array = Array(3) { index: Int -> - builder.addOutputSlot(getPosition(5 + index), getPosition(0)).setSlotBackground(HTBackgroundType.OUTPUT) + builder.addOutputSlot(getPosition(3 + index), getPosition(0)).setSlotBackground(HTBackgroundType.OUTPUT) } for ((index: Int, result: HTFluidResult) in recipe.results.withIndex()) { outputSlots[index].add(result) @@ -41,7 +36,6 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : } override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTElectrolyzingRecipe, focuses: IFocusGroup) { - builder.addRecipePlus(getPosition(1)) - builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt new file mode 100644 index 0000000000..bbf191ac66 --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt @@ -0,0 +1,49 @@ +package hiiragi283.ragium.client.integration.jei.category + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory +import hiiragi283.ragium.api.recipe.RTWashingRecipe +import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class RTWashingRecipeCategory(guiHelper: IGuiHelper) : + HTHolderRecipeCategory( + guiHelper, + RagiumJeiRecipeTypes.WASHING, + 18 * 8, + 18 * 1, + RTWashingRecipe.CODEC + ) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RTWashingRecipe, focuses: IFocusGroup) { + // inputs + builder + .addInputSlot(getPosition(0), getPosition(0)) + .add(recipe.fluidIngredient) + .setSlotBackground(HTBackgroundType.INPUT) + builder + .addInputSlot(getPosition(2), getPosition(0)) + .add(recipe.itemIngredient) + .setSlotBackground(HTBackgroundType.INPUT) + // outputs + builder + .addOutputSlot(getPosition(5), getPosition(0)) + .add(recipe.results.head) + .setSlotBackground(HTBackgroundType.OUTPUT) + + val slot: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(7), getPosition(0)) + .setSlotBackground(HTBackgroundType.EXTRA_OUTPUT) + recipe.results.getOrNull(1)?.let(slot::add) + } + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTWashingRecipe, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + builder.addRecipePlus(getPosition(6)) + } +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index c6559c80a8..9bc184cb08 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -2,7 +2,8 @@ package hiiragi283.ragium.data import hiiragi283.lib.data.createLootTables import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.world.RagiumDamageTypes import hiiragi283.ragium.data.advancement.RagiumAdvancementProvider import hiiragi283.ragium.data.lang.RagiumEnglishLangProvider @@ -39,7 +40,8 @@ data object RagiumDataGen { event.createDatapackRegistryObjects( RegistrySetBuilder() .add(Registries.DAMAGE_TYPE, RagiumDamageTypes::bootstrap) - .add(RagiumRegistries.Keys.ORE_SLURRY_DATA, RagiumOreSlurryData::bootstrap) + .add(RagiumRegistries.Keys.ELEMENT, RagiumElements::bootstrap) + .add(RagiumRegistries.Keys.CHEMICAL, RagiumChemicals::bootstrap) .apply(RagiumWorldData::bootstrap) ) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index eb764034dd..b040367e4e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -78,7 +78,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumAdvancementKeys.SOOTY_IRON, RagiumAdvancementKeys.ROOT, HTItemPart.INGOT, - RagiumMaterial.Metal.SOOTY_IRON + RagiumMaterial.Alloy.SOOTY_IRON ) // Mechanical createSimple( @@ -113,7 +113,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumAdvancementKeys.BLACK_STEEL, RagiumAdvancementKeys.ALLOY_SMELTER, HTItemPart.INGOT, - RagiumMaterial.Metal.BLACK_STEEL + RagiumMaterial.Alloy.BLACK_STEEL ) createSimple( RagiumAdvancementKeys.FREEZER, diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 30609fcef1..c544998faf 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -4,7 +4,8 @@ import hiiragi283.lib.data.lang.HTLangProvider import hiiragi283.lib.data.lang.HTLangTypes import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.advancment.RagiumAdvancementKeys @@ -40,11 +41,9 @@ class RagiumEnglishLangProvider(output: PackOutput) : // Block add(RagiumBlocks.ECHO_BLOCK, "Block of Echo") - add(RagiumBlocks.FLUORITE_BLOCK, "Block of Fluorite") add(RagiumBlocks.FLUORITE_SLAB, "Fluorite Slab") add(RagiumBlocks.FLUORITE_STAIRS, "Fluorite Stairs") - add(RagiumBlocks.CRYOLITE_BLOCK, "Block of Cryolite") add(RagiumBlocks.CRYOLITE_SLAB, "Cryolite Slab") add(RagiumBlocks.CRYOLITE_STAIRS, "Cryolite Stairs") @@ -62,17 +61,19 @@ class RagiumEnglishLangProvider(output: PackOutput) : 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.ELECTROLYZER, "Electrolyzer") add(RagiumBlocks.PRECISION_ASSEMBLER, "Precision Assembler") add(RagiumBlocks.SCANNER, "Laser Scanner") add(RagiumBlocks.ENCHANTER, "Enchanter") + add(RagiumBlocks.FLUID_OUTPUT_BUS, "Fluid Output Bus") + add(RagiumBlocks.TANK, "Variable Tank") add(RagiumBlocks.VOID_TANK, "Void Tank") add(RagiumBlocks.CREATIVE_BATTERY, "Creative Battery") @@ -94,9 +95,11 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.MOLTEN_ENDER, "Resonant Ender") addFluid(RagiumFluids.HYDROGEN, "Hydrogen") + addFluid(RagiumFluids.NITROGEN, "Nitrogen") addFluid(RagiumFluids.OXYGEN, "Oxygen") addFluid(RagiumFluids.CHLORINE, "Chlorine") + addFluid(RagiumFluids.CARBON_DIOXIDE, "Carbon Dioxide") addFluid(RagiumFluids.WOOD_TAR, "Wood Tar") addFluid(RagiumFluids.COAL_TAR, "Coal Tar") addFluid(RagiumFluids.AROMATIC_COMPOUND, "Aromatic Compound") @@ -109,6 +112,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "Liquid Explosive") addFluid(RagiumFluids.HYDROGEN_FLUORIDE, "Hydrogen Fluoride") addFluid(RagiumFluids.HYDROFLUORIC_ACID, "Hydrofluoric Acid") + addFluid(RagiumFluids.SALT_WATER, "Salt Water") addFluid(RagiumFluids.NAOH_SOLUTION, "Sodium Hydroxide Solution") addFluid(RagiumFluids.ALUMINA_SOLUTION, "Alumina Solution") addFluid(RagiumFluids.SULFUR_DIOXIDE, "Sulfur Dioxide") @@ -117,24 +121,27 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") addFluid(RagiumFluids.BLEACH, "Bleach") - - add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") - add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") + addFluid(RagiumFluids.CAOH_SOLUTION, "Calcium Hydroxide Solution") // Item add(RagiumItems.BAMBOO_CHARCOAL, "Bamboo Charcoal") - add(RagiumItems.TAR, "Tar") add(RagiumItems.PARTICLE_BOARD, "Particle Board") + add(RagiumItems.CEMENT, "Cement") + add(RagiumItems.MORTAR, "Mortar") + add(RagiumItems.TAR, "Tar") + add(RagiumItems.STICKY_BALL, "Sticky Ball") add(RagiumItems.PLASTIC_PLATE, "Plastic Plate") add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") - add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") + add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") + add(RagiumItems.CARBON_FIBER, "Carbon Fiber") + add(RagiumItems.CFRP_PLATE, "CFRP Plate") + add(RagiumItems.ALCLAD_PLATE, "Alclad Plate") add(RagiumItems.BEESWAX, "Beeswax") add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") add(RagiumItems.CRUDE_SILICON, "Crude Silicon") add(RagiumItems.SILICON_WAFER, "Silicon Wafer") add(RagiumItems.CIRCUIT_CHIP, "Circuit Chip") - add(RagiumItems.CIRCUIT_BOARD, "Circuit Board") add(RagiumItems.ELECTRIC_CIRCUIT, "Electric Circuit") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") @@ -146,12 +153,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumMobEffects.FROSTBITE, "Frostbite") add(RagiumMobEffects.CHEMICAL_BURN, "Chemical Burn") - // Ore Slurry - addOreSlurry(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") - addOreSlurry(RagiumOreSlurryData.IRON, "Iron Ore Slurry") - addOreSlurry(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") - addOreSlurry(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") - // Potion addPotion(RagiumPotions.FROSTBITE, "Frostbite") addPotion(RagiumPotions.CHEMICAL_BURN, "Chemical Burn") @@ -179,13 +180,15 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "Refining") add(RagiumRecipeTypes.BATHING, "Chemical Bathing") - add(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") + add(RagiumRecipeTypes.CENTRIFUGING, "Centrifuging") add(RagiumRecipeTypes.MIXING, "Mixing") add(RagiumRecipeTypes.REACTING, "Chemical Reacting") + add(RagiumRecipeTypes.WASHING, "Washing") add(RagiumRecipeTypes.BREWING, "Brewing") add(RagiumRecipeTypes.PLANTING, "Planting") + add(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "Resource Extracting") add(RagiumRecipeTypes.ENCHANTING, "Enchanting") @@ -223,5 +226,67 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_RATE, "Energy Rate") add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"Scanned Item: %1$s") + + addDataTranslations() + } + + private fun addDataTranslations() { + // Chemical + addFromKey(RagiumChemicals.HYDROGEN, "Hydrogen") + + addFromKey(RagiumChemicals.CARBON, "Carbon") + addFromKey(RagiumChemicals.DIAMOND, "Diamond") + addFromKey(RagiumChemicals.NITROGEN, "Nitrogen") + addFromKey(RagiumChemicals.OXYGEN, "Oxygen") + + addFromKey(RagiumChemicals.ALUMINUM, "Aluminum") + addFromKey(RagiumChemicals.SILICON, "Silicon") + addFromKey(RagiumChemicals.SULFUR, "Sulfur") + addFromKey(RagiumChemicals.CHLORINE, "Chlorine") + + addFromKey(RagiumChemicals.IRON, "Iron") + addFromKey(RagiumChemicals.COPPER, "Copper") + addFromKey(RagiumChemicals.GOLD, "Gold") + + addFromKey(RagiumChemicals.HYDROXIDE, "Hydroxide") + addFromKey(RagiumChemicals.WATER, "Water") + + addFromKey(RagiumChemicals.NITRATE, "Nitrate") + addFromKey(RagiumChemicals.NITRIC_ACID, "Nitric Acid") + addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "Hydrogen Fluoride") + addFromKey(RagiumChemicals.FLUORITE, "Fluorite") + addFromKey(RagiumChemicals.CRYOLITE, "Cryolite") + + addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "Sodium Hydroxide") + addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "Sodium Chloride") + addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "Aluminum Oxide") + addFromKey(RagiumChemicals.SILICON_DIOXIDE, "Silicon Dioxide") + addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "Sulfur Dioxide") + addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "Sulfur Trioxide") + addFromKey(RagiumChemicals.SULFATE, "Sulfate") + addFromKey(RagiumChemicals.SULFURIC_ACID, "Sulfuric Acid") + addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "Hydrogen chloride") + + addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "Potassium Nitrate") + // Element + addFromKey(RagiumElements.HYDROGEN, "Hydrogen") + + addFromKey(RagiumElements.CARBON, "Carbon") + addFromKey(RagiumElements.NITROGEN, "Nitrogen") + addFromKey(RagiumElements.OXYGEN, "Oxygen") + addFromKey(RagiumElements.FLUORINE, "Fluorine") + + addFromKey(RagiumElements.SODIUM, "Sodium") + addFromKey(RagiumElements.ALUMINUM, "Aluminum") + addFromKey(RagiumElements.SILICON, "Silicon") + addFromKey(RagiumElements.SULFUR, "Sulfur") + addFromKey(RagiumElements.CHLORINE, "Chlorine") + + addFromKey(RagiumElements.POTASSIUM, "Potassium") + addFromKey(RagiumElements.CALCIUM, "Calcium") + addFromKey(RagiumElements.IRON, "Iron") + addFromKey(RagiumElements.COPPER, "Copper") + + addFromKey(RagiumElements.GOLD, "Gold") } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 1eaf4c1202..a1c7c0f1de 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -4,7 +4,8 @@ import hiiragi283.lib.data.lang.HTLangProvider import hiiragi283.lib.data.lang.HTLangTypes import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.advancment.RagiumAdvancementKeys @@ -36,11 +37,9 @@ class RagiumJapaneseLangProvider(output: PackOutput) : // Block add(RagiumBlocks.ECHO_BLOCK, "残響ブロック") - add(RagiumBlocks.FLUORITE_BLOCK, "蛍石ブロック") add(RagiumBlocks.FLUORITE_SLAB, "蛍石のハーフブロック") add(RagiumBlocks.FLUORITE_STAIRS, "蛍石の階段") - add(RagiumBlocks.CRYOLITE_BLOCK, "氷晶石ブロック") add(RagiumBlocks.CRYOLITE_SLAB, "氷晶石のハーフブロック") add(RagiumBlocks.CRYOLITE_STAIRS, "氷晶石の階段") @@ -58,17 +57,19 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.CHEMICAL_BATH, "化学浴槽") add(RagiumBlocks.CHEMICAL_REACTOR, "化学反応槽") - add(RagiumBlocks.ELECTROLYZER, "電解機") add(RagiumBlocks.MIXER, "混合機") add(RagiumBlocks.BREWERY, "醸造機") add(RagiumBlocks.PLANTER, "栽培機") + add(RagiumBlocks.ELECTROLYZER, "電解機") add(RagiumBlocks.PRECISION_ASSEMBLER, "精密組立機") add(RagiumBlocks.SCANNER, "レーザースキャナ") add(RagiumBlocks.ENCHANTER, "エンチャンター") + add(RagiumBlocks.FLUID_OUTPUT_BUS, "液体搬出バス") + add(RagiumBlocks.TANK, "可変タンク") add(RagiumBlocks.VOID_TANK, "廃棄タンク") add(RagiumBlocks.CREATIVE_BATTERY, "クリエイティブ用バッテリー") @@ -90,9 +91,11 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.MOLTEN_ENDER, "共振エンダー") addFluid(RagiumFluids.HYDROGEN, "水素") + addFluid(RagiumFluids.NITROGEN, "窒素") addFluid(RagiumFluids.OXYGEN, "酸素") addFluid(RagiumFluids.CHLORINE, "塩素") + addFluid(RagiumFluids.CARBON_DIOXIDE, "二酸化炭素") addFluid(RagiumFluids.WOOD_TAR, "木タール") addFluid(RagiumFluids.COAL_TAR, "石炭タール") addFluid(RagiumFluids.AROMATIC_COMPOUND, "芳香族化合物") @@ -105,6 +108,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "液体爆薬") addFluid(RagiumFluids.HYDROGEN_FLUORIDE, "フッ化水素") addFluid(RagiumFluids.HYDROFLUORIC_ACID, "フッ化水素酸") + addFluid(RagiumFluids.SALT_WATER, "塩水") addFluid(RagiumFluids.NAOH_SOLUTION, "水酸化ナトリウム水溶液") addFluid(RagiumFluids.ALUMINA_SOLUTION, "アルミナ水溶液") addFluid(RagiumFluids.SULFUR_DIOXIDE, "二酸化硫黄") @@ -113,24 +117,27 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") addFluid(RagiumFluids.BLEACH, "漂白剤") - - add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") - add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") + addFluid(RagiumFluids.CAOH_SOLUTION, "水酸化カルシウム水溶液") // Item add(RagiumItems.BAMBOO_CHARCOAL, "竹炭") - add(RagiumItems.TAR, "タール") add(RagiumItems.PARTICLE_BOARD, "パーティクルボード") + add(RagiumItems.CEMENT, "セメント") + add(RagiumItems.MORTAR, "モルタル") + add(RagiumItems.TAR, "タール") + add(RagiumItems.STICKY_BALL, "粘着質な塊") add(RagiumItems.PLASTIC_PLATE, "プラスチック板") add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") - add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") + add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") + add(RagiumItems.CARBON_FIBER, "炭素繊維") + add(RagiumItems.CFRP_PLATE, "炭素繊維強化プラスチック板") + add(RagiumItems.ALCLAD_PLATE, "アルクラッド板") add(RagiumItems.BEESWAX, "密猟") add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") add(RagiumItems.LINGERING_BOTTLE, "残留瓶") add(RagiumItems.CRUDE_SILICON, "粗製シリコン") add(RagiumItems.SILICON_WAFER, "シリコンウェハ") add(RagiumItems.CIRCUIT_CHIP, "回路チップ") - add(RagiumItems.CIRCUIT_BOARD, "回路基板") add(RagiumItems.ELECTRIC_CIRCUIT, "電子回路") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") @@ -142,12 +149,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumMobEffects.FROSTBITE, "凍傷") add(RagiumMobEffects.CHEMICAL_BURN, "化学火傷") - // Ore Slurry - addOreSlurry(RagiumOreSlurryData.COPPER, "銅の鉱石泥") - addOreSlurry(RagiumOreSlurryData.IRON, "鉄の鉱石泥") - addOreSlurry(RagiumOreSlurryData.GOLD, "金の鉱石泥") - addOreSlurry(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") - // Potion addPotion(RagiumPotions.FROSTBITE, "凍傷") addPotion(RagiumPotions.CHEMICAL_BURN, "化学火傷") @@ -175,13 +176,15 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "蒸留") add(RagiumRecipeTypes.BATHING, "化学洗浄") - add(RagiumRecipeTypes.ELECTROLYZING, "電気分解") + add(RagiumRecipeTypes.CENTRIFUGING, "遠心分離") add(RagiumRecipeTypes.MIXING, "混合") add(RagiumRecipeTypes.REACTING, "化学反応") + add(RagiumRecipeTypes.WASHING, "洗浄") add(RagiumRecipeTypes.BREWING, "醸造") add(RagiumRecipeTypes.PLANTING, "栽培") + add(RagiumRecipeTypes.ELECTROLYZING, "電気分解") add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "資源採集") add(RagiumRecipeTypes.ENCHANTING, "エンチャント") @@ -219,5 +222,67 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_RATE, "エネルギー使用速度") add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"スキャン済み: %1$s") + + addDataTranslations() + } + + private fun addDataTranslations() { + // Chemical + addFromKey(RagiumChemicals.HYDROGEN, "水素") + + addFromKey(RagiumChemicals.CARBON, "炭素") + addFromKey(RagiumChemicals.DIAMOND, "ダイヤモンド") + addFromKey(RagiumChemicals.NITROGEN, "窒素") + addFromKey(RagiumChemicals.OXYGEN, "酸素") + + addFromKey(RagiumChemicals.ALUMINUM, "アルミニウム") + addFromKey(RagiumChemicals.SILICON, "ケイ素") + addFromKey(RagiumChemicals.SULFUR, "硫黄") + addFromKey(RagiumChemicals.CHLORINE, "塩素") + + addFromKey(RagiumChemicals.IRON, "鉄") + addFromKey(RagiumChemicals.COPPER, "銅") + addFromKey(RagiumChemicals.GOLD, "金") + + addFromKey(RagiumChemicals.HYDROXIDE, "水酸化物") + addFromKey(RagiumChemicals.WATER, "水") + + addFromKey(RagiumChemicals.NITRATE, "硝酸塩") + addFromKey(RagiumChemicals.NITRIC_ACID, "硝酸") + addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "フッ化水素") + addFromKey(RagiumChemicals.FLUORITE, "蛍石") + addFromKey(RagiumChemicals.CRYOLITE, "氷晶石") + + addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "水酸化ナトリウム") + addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "塩化ナトリウム") + addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "酸化アルミニウム") + addFromKey(RagiumChemicals.SILICON_DIOXIDE, "二酸化ケイ素") + addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "二酸化硫黄") + addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "三酸化硫黄") + addFromKey(RagiumChemicals.SULFATE, "硫酸塩") + addFromKey(RagiumChemicals.SULFURIC_ACID, "硫酸") + addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "塩化水素") + + addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "硝酸カリウム") + // Element + addFromKey(RagiumElements.HYDROGEN, "水素") + + addFromKey(RagiumElements.CARBON, "炭素") + addFromKey(RagiumElements.NITROGEN, "窒素") + addFromKey(RagiumElements.OXYGEN, "酸素") + addFromKey(RagiumElements.FLUORINE, "フッ素") + + addFromKey(RagiumElements.SODIUM, "ナトリウム") + addFromKey(RagiumElements.ALUMINUM, "アルミニウム") + addFromKey(RagiumElements.SILICON, "ケイ素") + addFromKey(RagiumElements.SULFUR, "硫黄") + addFromKey(RagiumElements.CHLORINE, "塩素") + + addFromKey(RagiumElements.POTASSIUM, "カリウム") + addFromKey(RagiumElements.CALCIUM, "カルシウム") + addFromKey(RagiumElements.IRON, "鉄") + addFromKey(RagiumElements.COPPER, "銅") + + addFromKey(RagiumElements.GOLD, "金") } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index a4cdde5d38..8c4c94c012 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -11,6 +11,7 @@ import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTItemPart +import hiiragi283.ragium.api.material.HTStorageBlockPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids @@ -26,6 +27,9 @@ interface RagiumLangProvider { .forEach { (part: HTBlockPart, material: RagiumMaterial, block: HTHasTranslationKey) -> provider.add(block, part, material) } + provider.add(RagiumBlocks.FLUORITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.FLUORITE) + provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) + val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { provider.add(casing, casingPattern, machineType) @@ -57,7 +61,7 @@ interface RagiumLangProvider { provider.add(parts, partsPattern, machineType) } for (toolType: HTToolType in HTToolType.entries) { - provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Metal.SOOTY_IRON) + provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Alloy.SOOTY_IRON) } // Text // API - Constants diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index 684f271ff4..866a0204d4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt @@ -43,8 +43,12 @@ class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : add(machine, ::copyComponent) } // Storage - for (tank: HTSimpleDeferredBlockAndItem in listOf(RagiumBlocks.TANK, RagiumBlocks.CREATIVE_TANK)) { - add(tank) { block: Block -> copyComponent(block) { include(RagiumDataComponents.FLUID) } } + listOf( + RagiumBlocks.FLUID_OUTPUT_BUS, + RagiumBlocks.TANK, + RagiumBlocks.CREATIVE_TANK + ).forEach { blockItem: HTSimpleDeferredBlockAndItem -> + add(blockItem) { block: Block -> copyComponent(block) { include(RagiumDataComponents.FLUID) } } } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 450da341df..6925b46af8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -23,6 +23,7 @@ import net.minecraft.client.data.models.blockstates.PropertyDispatch import net.minecraft.client.data.models.model.ModelTemplates import net.minecraft.client.data.models.model.TextureMapping import net.minecraft.client.data.models.model.TextureSlot +import net.minecraft.client.data.models.model.TexturedModel import net.minecraft.client.resources.model.sprite.Material import net.minecraft.data.PackOutput import net.minecraft.resources.Identifier @@ -46,8 +47,6 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP add(RagiumFluids.CRUDE_OIL) add(RagiumFluids.SYNTHETIC_RESIN) add(RagiumFluids.SULFURIC_ACID) - - add(RagiumFluids.ORE_SLURRY) } for (content: HTFluidContent in RagiumFluids.REGISTER.asSequence()) { // Item @@ -125,6 +124,8 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP ) ) } + // Bus + generators.createTrivialBlock(RagiumBlocks.FLUID_OUTPUT_BUS.getOrThrow(), TexturedModel.CUBE_TOP_BOTTOM) // Storage generators.createTrivialBlock(RagiumBlocks.TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) generators.createTrivialBlock(RagiumBlocks.VOID_TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt index 7914fa1f23..952ebe860d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt @@ -1,6 +1,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 45ec6b191e..aefa190ea8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -6,63 +6,139 @@ import hiiragi283.ragium.api.RagiumAPI 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.RagiumTags import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.world.item.Items +import net.neoforged.neoforge.common.Tags import java.util.concurrent.CompletableFuture class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { - bathing() - electrolyzing() - } + washing() - private fun bathing() { - // Wood Pulp + NaOH aq -> Paper Pulp + // Wood Pulp + Resin -> Particle Board RagiumRecipeBuilders.bathing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } fluidIngredient { - +holderSet(RagiumFluids.NAOH_SOLUTION) - amount = 250 + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 8 } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.PAPER) } - recipeId suffix "_from_wood" + result { +RagiumItems.PARTICLE_BOARD } }.save(exporter) - // Paper Pulp + Water -> Paper + // Piston + Resin -> Sticky Piston RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.PAPER) } + itemIngredient { items { +Items.PISTON } } fluidIngredient { - +waterSet() - amount = 250 + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 8 } - result { +Items.PAPER } - recipeId suffix "_from_pulp" + result { +Items.STICKY_PISTON } }.save(exporter) - // Molten Glass + Amethyst -> Tinted Glass + // Cement + Water -> Mortar RagiumRecipeBuilders.bathing { - itemIngredient { +dustOrGem(RagiumMaterial.Gem.AMETHYST) } - fluidIngredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } - result { - +Items.TINTED_GLASS - count = 2 + itemIngredient { items { +RagiumItems.CEMENT } } + fluidIngredient { + +waterSet() + amount /= 4 } + result { +RagiumItems.MORTAR } }.save(exporter) } - private fun electrolyzing() { - // 2x H2O -> 2x H2 + O2 - RagiumRecipeBuilders.electrolyzing { + private fun washing() { + // Sand + Water -> SiO2 + Borax + RagiumRecipeBuilders.washing { + itemIngredient { + +holderSet(Tags.Items.SANDS_COLORLESS) + count = 4 + } fluidIngredient { +waterSet() } - result { +RagiumFluids.HYDROGEN } result { - +RagiumFluids.OXYGEN - amount /= 2 + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 3 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BORAX) } + recipeId suffix "_from_sands" + }.save(exporter) + // Red Sand + Water -> SiO2 + Bauxite + RagiumRecipeBuilders.washing { + itemIngredient { + +holderSet(Tags.Items.SANDS_RED) + count = 4 + } + fluidIngredient { +waterSet() } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 3 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BAUXITE) } + recipeId suffix "_from_red_sands" + }.save(exporter) + // Blue Ice + HF (aq) -> Packed Ice + Cryolite + RagiumRecipeBuilders.washing { + itemIngredient { items { +Items.BLUE_ICE } } + fluidIngredient { +holderSet(RagiumFluids.HYDROFLUORIC_ACID) } + result { + +Items.PACKED_ICE + count = 6 + } + result { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + }.save(exporter) + + // Ancient Debris -> Netherite Scrap + RagiumRecipeBuilders.washing { + itemIngredient { items { +Items.ANCIENT_DEBRIS } } + fluidIngredient { + +holderSet(RagiumFluids.HYDROFLUORIC_ACID) + amount /= 4 + } + result { + +Items.NETHERITE_SCRAP + count = 3 + } + recipeId suffix "_from_debris" + }.save(exporter) + // Raw XX -> XX Dust + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.COPPER) } + fluidIngredient { + +holderSet(RagiumFluids.SULFURIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) + count = 3 + } + recipeId suffix "_from_raw" + }.save(exporter) + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.IRON) } + fluidIngredient { + +holderSet(RagiumFluids.SULFURIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.IRON) + count = 2 + } + recipeId suffix "_from_raw" + }.save(exporter) + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.GOLD) } + fluidIngredient { + +holderSet(RagiumFluids.NITRIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.GOLD) + count = 2 } - recipeId suffix "_from_water" + recipeId suffix "_from_raw" }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 2eb087236d..9407bf5334 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -3,8 +3,12 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.collection.nelOf import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.RagiumAPI @@ -88,7 +92,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) RagiumRecipeBuilders.pyrolyzing { ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Fuel.COAL) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.CARBON) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) } fluidResult { +RagiumFluids.COAL_TAR amount = 500 @@ -180,6 +184,17 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu count = 2 } }.save(exporter) + // Synthetic Fiber + Nitrogen -> Carbon Fiber + // Carbon Fiber + Resin -> CFRP Plate + RagiumRecipeBuilders.bathing { + itemIngredient { items { +RagiumItems.CARBON_FIBER } } + fluidIngredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 4 + } + result { +RagiumItems.CFRP_PLATE } + }.save(exporter) + // Naphtha + Redstone -> Anti-rust Oil RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } @@ -218,7 +233,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.COLORED_RESINS.black) amount /= 4 }*/ - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } } } @@ -227,6 +242,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu private fun chemical() { colored() + alkali() chlorine() sulfuricAcid() nitricAcid() @@ -284,7 +300,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) // Carbon + Resin -> Black Dye RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.CARBON) } + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CARBON) } fluidIngredient { +holderSet(RagiumTags.Fluids.RESINS) amount /= 4 @@ -294,17 +310,103 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } - private fun chlorine() { - // Dried Kelp + Water -> Salt - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(Tags.Items.STORAGE_BLOCKS_DRIED_KELP) } - fluidIngredient { +waterSet() } + private fun alkali() { + // Dried Kelp -> Na2CO3 + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { items { +Items.DRIED_KELP } } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + exp = 0.15f + } + // 2x NaOH (aq) + CO2 -> Na2CO3 + H2O + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.NAOH_SOLUTION) } + secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } + fluidResult { + +Fluids.WATER + amount *= 2 + } + val dust: HTSimpleDeferredItem = + RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) + itemResult { +dust } + recipeId replace dust.idOrThrow + recipeId suffix "_from_solution" + }.save(exporter) + // SiO2 + Na2CO3 -> Glass + RagiumRecipeBuilders.alloying { + ingredient { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Gem.QUARTZ) + count = 2 + } + extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) + +Items.GLASS count = 6 } - recipeId suffix "_from_block" }.save(exporter) + + // CaCO3 -> CaO + CO2 + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + exp = 0.15f + } + RagiumRecipeBuilders.pyrolyzing { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + fluidResult { +RagiumFluids.CARBON_DIOXIDE } + }.save(exporter) + // CaO + H2O -> Ca(OH)2 (aq) + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + fluidIngredient { +waterSet() } + result { +RagiumFluids.CAOH_SOLUTION } + }.save(exporter) + // Ca(OH)2 (aq) + CO2 -> CaCO3 + H2O + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.CAOH_SOLUTION) } + secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } + fluidResult { + +Fluids.WATER + amount *= 2 + } + val dust: HTSimpleDeferredItem = + RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) + itemResult { +dust } + recipeId replace dust.idOrThrow + recipeId suffix "_from_solution" + }.save(exporter) + + // Wood Pulp + NaOH aq -> Paper Pulp + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } + fluidIngredient { + +holderSet(RagiumFluids.NAOH_SOLUTION) + amount = 250 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.PAPER) } + recipeId suffix "_from_wood" + }.save(exporter) + // Paper Pulp + Water -> Paper + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.PAPER) } + fluidIngredient { + +waterSet() + amount = 250 + } + result { +Items.PAPER } + recipeId suffix "_from_pulp" + }.save(exporter) + } + + private fun chlorine() { + // NaCl(aq) -> H2O + NaCl + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumFluids.SALT_WATER) } + fluidResult { +Fluids.WATER } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) } + recipeId replace id("salt_dust_from_salt_water") + }.save(exporter) + // 2x NaCl + H2SO4 -> 2x HCl + Na2SO4 RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } @@ -317,8 +419,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) RagiumRecipeBuilders.electrolyzing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } - fluidIngredient { +waterSet() } + ingredient { +holderSet(RagiumFluids.SALT_WATER) } result { +RagiumFluids.HYDROGEN amount /= 2 @@ -470,7 +571,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Alumina Solution -> Al2O3 + Water RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.ALUMINA) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } fluidResult { +Fluids.WATER } recipeId replace id("alumina_dust_from_solution") }.save(exporter) @@ -485,7 +586,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) // Al2O3 + Cokes + Na3AlF6 -> Al RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.ALUMINA) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } extra { +holderSet(RagiumTags.Items.COKES) } result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) @@ -494,7 +595,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu time *= 4 }.save(exporter) RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.ALUMINA) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } extra { +holderSet(RagiumTags.Items.COKES) } extra { +dustOrGem(RagiumMaterial.Gem.CRYOLITE) } result { @@ -503,6 +604,18 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId suffix "_with_cryolite" }.save(exporter) + // Al + Cu -> Alclad Plate + RagiumRecipeBuilders.assembling { + ingredient { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.ALUMINUM) + count = 3 + } + extra { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) } + result { + +RagiumItems.ALCLAD_PLATE + count = 4 + } + }.save(exporter) } // Electronics // @@ -563,12 +676,12 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.HYDROCHLORIC_ACID) amount = 125 } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.SILICON) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SILICON) } }.save(exporter) // Si Dust + Redstone -> Silicon Wafer RagiumRecipeBuilders.alloying { ingredient { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.SILICON) + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SILICON) count = 8 } extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.RAGINITE) } @@ -583,26 +696,24 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } }.save(exporter) - // Plastic + Gold Dust -> Circuit Board - RagiumRecipeBuilders.alloying { - ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } - extra { +dustOrIngot(RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.CIRCUIT_BOARD } - }.save(exporter) - // Circuit Chip + Circuit Board -> Electric Circuit + // Plastic + Circuit Chip + Gold Nugget -> Electric Circuit RagiumRecipeBuilders.assembling { - ingredient { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + extra { items { +RagiumItems.CIRCUIT_CHIP } count = 2 } - extra { items { +RagiumItems.CIRCUIT_BOARD } } + extra { + +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.GOLD) + count = 3 + } result { +RagiumItems.ELECTRIC_CIRCUIT } }.save(exporter) // Machine Parts RagiumRecipeBuilders.assembling { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) - count = 4 + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) + count = 2 } extra { items { +RagiumItems.ELECTRIC_CIRCUIT } } result { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } @@ -610,10 +721,16 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) RagiumRecipeBuilders.assembling { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.VOID_METAL) + items { +RagiumItems.CFRP_PLATE } + } + extra { + items { +RagiumItems.CIRCUIT_CHIP } count = 2 } - extra { items { +RagiumItems.ELECTRIC_CIRCUIT } } + extra { + +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.GOLD) + count = 3 + } result { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt index 8e51cca590..bebd215fa1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -14,15 +14,29 @@ import java.util.concurrent.CompletableFuture class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + electrolyzing() resourceExtracting() } + private fun electrolyzing() { + // 2x H2O -> 2x H2 + O2 + RagiumRecipeBuilders.electrolyzing { + ingredient { +waterSet() } + result { +RagiumFluids.HYDROGEN } + result { + +RagiumFluids.OXYGEN + amount /= 2 + } + recipeId suffix "_from_water" + }.save(exporter) + } + private fun resourceExtracting() { // XX -> Water RagiumRecipeBuilders.resourceExtracting { biomes { +holderSet(Tags.Biomes.IS_OCEAN) } result { - +Fluids.WATER + +RagiumFluids.SALT_WATER amount *= 4 } recipeId suffix "_at_ocean" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 6610f3b0de..ebde48cd30 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -2,6 +2,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.collection.nelOf import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders @@ -64,7 +66,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture // Machine Casing RagiumRecipeBuilders.alloying { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) count = 2 } extra { +dustOrIngot(RagiumMaterial.Metal.GOLD) } @@ -82,7 +84,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture ) ) } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } recipeId suffix "_by_coals" }.save(exporter) // 2x Iron + Cokes -> 2x Sooty Iron @@ -93,33 +95,19 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } extra { +holderSet(RagiumTags.Items.COKES) } result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) count = 2 } recipeId suffix "_by_cokes" }.save(exporter) // Sooty Iron + Obsidian Dust -> Black Steel RagiumRecipeBuilders.alloying { - ingredient { +dustOrIngot(RagiumMaterial.Metal.SOOTY_IRON) } + ingredient { +dustOrIngot(RagiumMaterial.Alloy.SOOTY_IRON) } extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) count = 2 } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } - }.save(exporter) - // Aluminum + Copper + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.alloying { - ingredient { - +dustOrIngot(RagiumMaterial.Metal.ALUMINUM) - count = 3 - } - extra { +dustOrIngot(RagiumMaterial.Metal.COPPER) } - extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } - result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) - count = 4 - } - recipeId replace id("obzinite_ingot") + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } }.save(exporter) } @@ -144,6 +132,15 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture ingredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } result { +Items.GLASS } }.save(exporter) + + // Sticky Ball + RagiumRecipeBuilders.freezing { + ingredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 4 + } + result { +RagiumItems.STICKY_BALL } + }.save(exporter) } private fun melting() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index bbdd793e73..89adb2105e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -3,6 +3,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.color.HTColoredCollection import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.debugPath @@ -377,7 +379,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable // XX Dust -> XX for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { - val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) + val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getBase(fuel) RagiumRecipeBuilders.compressing { ingredient { +holderSet(CommonTagPrefixes.DUST, fuel) } result { +baseItem } @@ -448,6 +450,8 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } setOf( + Tags.Items.SANDSTONE_UNCOLORED_BLOCKS to Items.SAND, + Tags.Items.SANDSTONE_RED_BLOCKS to Items.RED_SAND, RagiumTags.BlockItem.QUARTZ_BLOCKS.item to Items.QUARTZ ).forEach { (block: TagKey, base: Item) -> RagiumRecipeBuilders.crushing { @@ -458,39 +462,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } }.save(exporter) } - // Sandstone -> 4x Sand + Niter - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(Tags.Items.SANDSTONE_UNCOLORED_BLOCKS) } - result { - +Items.SAND - count = 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.NITER) - } - }.save(exporter) - // Red Sandstone -> 4x Red Sand + Bauxite - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(Tags.Items.SANDSTONE_RED_BLOCKS) } - result { - +Items.RED_SAND - count = 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BAUXITE) - } - }.save(exporter) - // Blue Ice -> 9x Packed Ice + Cryolite - RagiumRecipeBuilders.crushing { - ingredient { items { +Items.BLUE_ICE } } - result { - +Items.PACKED_ICE - count = 9 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.CRYOLITE) - } - }.save(exporter) // Book -> 3x Paper Pulp RagiumRecipeBuilders.crushing { @@ -531,7 +502,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) RagiumRecipeBuilders.crushing { ingredient { +holderSet(RagiumTags.Items.COKES) } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.CARBON) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) } }.save(exporter) for (gem: RagiumMaterial.Gem in RagiumMaterial.Gem.entries) { @@ -543,10 +514,10 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue + for (metalLike: RagiumMaterial.MetalLike in RagiumMaterial.MetalLike.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metalLike] ?: continue RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.INGOT, metal) } + ingredient { +holderSet(CommonTagPrefixes.INGOT, metalLike) } result { +dust } recipeId suffix "_from_ingot" }.save(exporter) @@ -664,6 +635,12 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable recipeId suffix "_from_ore" }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { items { +Items.CALCITE } } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + recipeId suffix "_from_calcite" + }.save(exporter) + RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } result { @@ -731,7 +708,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // Raw XX -> XX Dust for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - if (!metal.hasRawVariant) continue val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue RagiumRecipeBuilders.crushing { ingredient { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 08d6b9fbc0..93534f9456 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -90,6 +90,36 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut count = 4 } }.save(exporter) + // Cement + VanillaRecipeBuilders.shapeless { + ingredient { +holderSet(Tags.Items.SANDS) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + result { + +RagiumItems.CEMENT + count = 2 + } + }.save(exporter) + // Mortar + VanillaRecipeBuilders.shapeless { + ingredient { +holderSet(Tags.Items.BUCKETS_WATER) } + repeat(4) { ingredient { items { +RagiumItems.CEMENT } } } + result { + +RagiumItems.MORTAR + count = 4 + } + }.save(exporter) + VanillaRecipeBuilders.shaped { + mosaic4() + define('A') { +holderSet(Tags.Items.BRICKS_NORMAL) } + define('B') { items { +RagiumItems.MORTAR } } + result { +Items.BRICKS } + }.save(exporter) + VanillaRecipeBuilders.shaped { + mosaic4() + define('A') { +holderSet(Tags.Items.BRICKS_NETHER) } + define('B') { items { +RagiumItems.MORTAR } } + result { +Items.NETHER_BRICKS } + }.save(exporter) // XX Tools registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) @@ -234,7 +264,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"A A" +"ABA" +" A " - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(Tags.Items.CHESTS_WOODEN) } result { +Items.HOPPER @@ -246,7 +276,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"A A" +"ABA" +" A " - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } define('B') { +holderSet(Tags.Items.CHESTS_WOODEN) } result { +Items.HOPPER @@ -262,7 +292,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Mechanical VanillaRecipeBuilders.shaped { layered2() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } result { +RagiumItems.getParts(HTMachineType.MECHANICAL) @@ -287,17 +317,24 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut bio(RagiumBlocks.BREWERY) { items { +Items.BREWING_STAND } } bio(RagiumBlocks.PLANTER) { items { +Items.FLOWER_POT } } // Electronics + electronics(RagiumBlocks.ELECTROLYZER) { +holderSet(ItemTags.LIGHTNING_RODS) } electronics(RagiumBlocks.PRECISION_ASSEMBLER) { items { +RagiumBlocks.ASSEMBLER } } // Arcane arcane(RagiumBlocks.ENCHANTER) { items { +Items.ENCHANTING_TABLE } } + // Bus + VanillaRecipeBuilders.shapeless { + ingredient { items { +RagiumBlocks.MACHINE_CASING } } + ingredient { items { +RagiumBlocks.TANK } } + result { +RagiumBlocks.FLUID_OUTPUT_BUS } + }.save(exporter) // Decoration VanillaRecipeBuilders.shaped { +"ABA" +"B B" +"ABA" - define('A') { +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.SOOTY_IRON) } - define('B') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Alloy.SOOTY_IRON) } + define('B') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } result { +RagiumBlocks.MACHINE_CASING count = 4 @@ -334,7 +371,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun mechanical(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.MECHANICAL, - RagiumMaterial.Metal.SOOTY_IRON, + RagiumMaterial.Alloy.SOOTY_IRON, RagiumMaterial.Metal.COPPER, result, builderAction @@ -344,7 +381,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun heat(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.HEAT, - RagiumMaterial.Metal.SOOTY_IRON, + RagiumMaterial.Alloy.SOOTY_IRON, RagiumMaterial.Metal.IRON, result, builderAction @@ -354,7 +391,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun chemical(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.CHEMICAL, - RagiumMaterial.Metal.BLACK_STEEL, + RagiumMaterial.Alloy.BLACK_STEEL, RagiumMaterial.Metal.GOLD, result, builderAction @@ -364,7 +401,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun bio(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.BIO, - RagiumMaterial.Metal.BLACK_STEEL, + RagiumMaterial.Alloy.BLACK_STEEL, RagiumMaterial.Gem.EMERALD, result, builderAction @@ -372,23 +409,29 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut } private inline fun electronics(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { - machine( - HTMachineType.ELECTRONICS, - RagiumMaterial.Metal.VOID_METAL, - RagiumMaterial.Gem.DIAMOND, - result, - builderAction - ) + VanillaRecipeBuilders.shaped { + +"ABA" + +"BCB" + +"ADA" + define('A') { items { +RagiumItems.ALCLAD_PLATE } } + define('B') { items { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } } + define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Gem.DIAMOND) } + define('D', builderAction) + result { +result } + }.save(exporter) } private inline fun arcane(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { - machine( - HTMachineType.ARCANE, - RagiumMaterial.Metal.VOID_METAL, - RagiumMaterial.Metal.NETHERITE, - result, - builderAction - ) + VanillaRecipeBuilders.shaped { + +"ABA" + +"BCB" + +"ADA" + define('A') { items { +Items.GHAST_TEAR } } + define('B') { items { +RagiumItems.getParts(HTMachineType.ARCANE) } } + define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Alloy.NETHERITE) } + define('D', builderAction) + result { +result } + }.save(exporter) } // Machine // @@ -397,14 +440,14 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Tank VanillaRecipeBuilders.shaped { hollow8() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.TANK } recipeId suffix "_by_sooty_iron" }.save(exporter) VanillaRecipeBuilders.shaped { hollow4() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.TANK } recipeId suffix "_by_black_steel" @@ -412,7 +455,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Void Tank VanillaRecipeBuilders.shaped { hollow8() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.VOID_METAL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.VOID_METAL) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.VOID_TANK } }.save(exporter) @@ -433,15 +476,15 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut registerStairsRecipes(RagiumBlocks.CRYOLITE_STAIRS, Ingredient.of(RagiumBlocks.CRYOLITE_BLOCK)) nineToBlock(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.SOOTY_IRON, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.BLACK_STEEL, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.VOID_METAL, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.VOID_METAL, HTItemPart.INGOT) // Ingot <-> Nugget - ingotToNugget(RagiumMaterial.Metal.NETHERITE, ingot = HTSimpleDeferredItem(vanillaId("netherite_ingot"))) ingotToNugget(RagiumMaterial.Metal.ALUMINUM) - ingotToNugget(RagiumMaterial.Metal.SOOTY_IRON) - ingotToNugget(RagiumMaterial.Metal.BLACK_STEEL) - ingotToNugget(RagiumMaterial.Metal.VOID_METAL) + ingotToNugget(RagiumMaterial.Alloy.NETHERITE, ingot = HTSimpleDeferredItem(vanillaId("netherite_ingot"))) + ingotToNugget(RagiumMaterial.Alloy.SOOTY_IRON) + ingotToNugget(RagiumMaterial.Alloy.BLACK_STEEL) + ingotToNugget(RagiumMaterial.Alloy.VOID_METAL) // Gear RagiumItems.getOrThrow(HTItemPart.GEAR, RagiumMaterial.Other.WOOD).let { gear: HTSimpleDeferredItem -> VanillaRecipeBuilders.shaped { @@ -456,24 +499,18 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) - RagiumItems.MATERIAL_ITEMS[HTItemPart.GEAR, RagiumMaterial.Metal.NETHERITE]?.let { + RagiumItems.MATERIAL_ITEMS[HTItemPart.GEAR, RagiumMaterial.Alloy.NETHERITE]?.let { VanillaRecipeBuilders.smithing { template { items { +Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE } } base { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Gem.DIAMOND) } - addition { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.NETHERITE) } + addition { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.NETHERITE) } result { +it } }.save(exporter) } // Dust -> Ingot - for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue - val item: HTSimpleDeferredItem = when (metal) { - RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_ingot")) - RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_ingot")) - RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_ingot")) - RagiumMaterial.Metal.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) - else -> RagiumItems.MATERIAL_ITEMS[HTItemPart.INGOT, metal] - } ?: continue + for (metalLike: RagiumMaterial.MetalLike in RagiumMaterial.MetalLike.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metalLike] ?: continue + val item: HTSimpleDeferredItem = RagiumMaterialHelper.getIngot(metalLike) VanillaRecipeBuilders.smeltingAndBlasting(exporter) { ingredient { items { +dust } } result { +item } @@ -484,7 +521,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut } // Fuel for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { - val base: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) + val base: HTSimpleDeferredItem = RagiumMaterialHelper.getBase(fuel) // Storage nineToBlock(fuel, Ingredient.of(base), base) // Tiny @@ -508,7 +545,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Sooty Iron val ironIngot: HolderSet = holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) val sootyIronIngot: HTSimpleDeferredItem = - RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) VanillaRecipeBuilders.shaped { hollow8() define('A') { diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index a458c40f2c..b3a767364a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -37,6 +37,8 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yield(RagiumBlocks.MACHINE_CASING) yieldAll(RagiumBlocks.MACHINE_CASINGS.values) + yield(RagiumBlocks.FLUID_OUTPUT_BUS) + yield(RagiumBlocks.TANK) yield(RagiumBlocks.VOID_TANK) yield(RagiumBlocks.CREATIVE_BATTERY) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 42c47d2e5d..fe69d2f00b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -53,7 +53,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu } builder(RagiumTags.Items.SOOTY_IRON_TOOL_MATERIALS) - .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Metal.SOOTY_IRON)) + .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Alloy.SOOTY_IRON)) // Other builder(ItemTags.SLABS) .add(RagiumBlocks.FLUORITE_SLAB) @@ -73,7 +73,9 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(HTCommonTags.Items.PITCH_COKE).add(RagiumItems.PITCH_COKE) builder(HTCommonTags.Items.PLASTICS).add(RagiumItems.PLASTIC_PLATE) builder(HTCommonTags.Items.SILICON).add(RagiumItems.CRUDE_SILICON) - builder(HTCommonTags.Items.STICKY_BALLS).addTag(Tags.Items.SLIME_BALLS) + builder(HTCommonTags.Items.STICKY_BALLS) + .addTag(Tags.Items.SLIME_BALLS) + .add(RagiumItems.STICKY_BALL) builder(RagiumTags.Items.COALS) .add(RagiumItems.BAMBOO_CHARCOAL) @@ -83,6 +85,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) builder(RagiumTags.Items.SHOW_FLUID_TOOLTIPS) + .add(RagiumBlocks.FLUID_OUTPUT_BUS) .add(RagiumBlocks.TANK) .add(RagiumBlocks.VOID_TANK) .add(RagiumBlocks.CREATIVE_TANK) diff --git a/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json new file mode 100644 index 0000000000..c1d3e117a0 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/calcium_hydroxide_solution" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json index 48bc37471f..47fbf005cb 100644 --- a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json +++ b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 90 }, "facing=east,is_active=true": { @@ -9,13 +9,13 @@ "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/machine/chemical" + "model": "ragium:block/machine/electronics" }, "facing=north,is_active=true": { "model": "ragium:block/electrolyzer" }, "facing=south,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 180 }, "facing=south,is_active=true": { @@ -23,7 +23,7 @@ "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 270 }, "facing=west,is_active=true": { diff --git a/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json b/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json new file mode 100644 index 0000000000..ffc971dedf --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/fluid_output_bus" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/salt_water.json b/src/generated/resources/assets/ragium/blockstates/salt_water.json new file mode 100644 index 0000000000..bd4a894986 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/salt_water.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/salt_water" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/circuit_board.json b/src/generated/resources/assets/ragium/items/alclad_plate.json similarity index 55% rename from src/generated/resources/assets/ragium/items/circuit_board.json rename to src/generated/resources/assets/ragium/items/alclad_plate.json index 8ee04d3701..ed5d15f997 100644 --- a/src/generated/resources/assets/ragium/items/circuit_board.json +++ b/src/generated/resources/assets/ragium/items/alclad_plate.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/circuit_board" + "model": "ragium:item/alclad_plate" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json new file mode 100644 index 0000000000..46c0e2bbaa --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/calcium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json b/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json new file mode 100644 index 0000000000..61a3cb3355 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:calcium_hydroxide_solution", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json new file mode 100644 index 0000000000..19e4e3c6ab --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json b/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json new file mode 100644 index 0000000000..a7eb3a34be --- /dev/null +++ b/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "flip_gas": true, + "fluid": "ragium:carbon_dioxide", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/carbon_fiber.json b/src/generated/resources/assets/ragium/items/carbon_fiber.json new file mode 100644 index 0000000000..24627ae3cf --- /dev/null +++ b/src/generated/resources/assets/ragium/items/carbon_fiber.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/carbon_fiber" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cement.json b/src/generated/resources/assets/ragium/items/cement.json new file mode 100644 index 0000000000..53fa74ebed --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cement.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cfrp_plate.json b/src/generated/resources/assets/ragium/items/cfrp_plate.json new file mode 100644 index 0000000000..6814337876 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cfrp_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cfrp_plate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/fluid_output_bus.json b/src/generated/resources/assets/ragium/items/fluid_output_bus.json new file mode 100644 index 0000000000..ff3f8e7a28 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/fluid_output_bus.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/fluid_output_bus" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mortar.json b/src/generated/resources/assets/ragium/items/mortar.json new file mode 100644 index 0000000000..8cc764b4f0 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mortar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/nitrogen_bucket.json b/src/generated/resources/assets/ragium/items/nitrogen_bucket.json new file mode 100644 index 0000000000..edcd279f2b --- /dev/null +++ b/src/generated/resources/assets/ragium/items/nitrogen_bucket.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "flip_gas": true, + "fluid": "ragium:nitrogen", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ 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/salt_water_bucket.json similarity index 69% rename from src/generated/resources/assets/ragium/items/ore_slurry_bucket.json rename to src/generated/resources/assets/ragium/items/salt_water_bucket.json index 2ba314b923..7c048af530 100644 --- a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json +++ b/src/generated/resources/assets/ragium/items/salt_water_bucket.json @@ -2,10 +2,10 @@ "model": { "type": "neoforge:fluid_container", "apply_fluid_luminosity": false, - "fluid": "ragium:ore_slurry", + "fluid": "ragium:salt_water", "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/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json new file mode 100644 index 0000000000..b3eba9dda0 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/sticky_ball.json b/src/generated/resources/assets/ragium/items/sticky_ball.json new file mode 100644 index 0000000000..481f769dcb --- /dev/null +++ b/src/generated/resources/assets/ragium/items/sticky_ball.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/sticky_ball" + } +} \ 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 d0dee0cd12..05e9917769 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -31,6 +31,8 @@ "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", + "block.ragium.calcium_hydroxide_solution": "Calcium Hydroxide Solution", + "block.ragium.carbon_dioxide": "Carbon Dioxide", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", "block.ragium.chemical_machine_casing": "Machine Casing (Chemical)", @@ -54,6 +56,7 @@ "block.ragium.electrolyzer": "Electrolyzer", "block.ragium.electronics_machine_casing": "Machine Casing (Electronics)", "block.ragium.enchanter": "Enchanter", + "block.ragium.fluid_output_bus": "Fluid Output Bus", "block.ragium.fluorite_block": "Block of Fluorite", "block.ragium.fluorite_slab": "Fluorite Slab", "block.ragium.fluorite_stairs": "Fluorite Stairs", @@ -86,9 +89,9 @@ "block.ragium.nether_sulfur_ore": "Nether Sulfur Ore", "block.ragium.niter_ore": "Niter Ore", "block.ragium.nitric_acid": "Nitric Acid", + "block.ragium.nitrogen": "Nitrogen", "block.ragium.ominous_flux": "Ominous Flux", "block.ragium.orange_dye": "Orange Dye", - "block.ragium.ore_slurry": "Invalid Ore Slurry", "block.ragium.oxygen": "Oxygen", "block.ragium.pink_dye": "Pink Dye", "block.ragium.pitch_coke_block": "Block of Pitch Coke", @@ -99,6 +102,7 @@ "block.ragium.red_dye": "Red Dye", "block.ragium.refinery": "Refinery", "block.ragium.resin": "Resin", + "block.ragium.salt_water": "Salt Water", "block.ragium.scanner": "Laser Scanner", "block.ragium.smelter": "Smelter", "block.ragium.sodium_hydroxide_solution": "Sodium Hydroxide Solution", @@ -185,6 +189,7 @@ "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", "item.minecraft.tipped_arrow.effect.nausea": "Arrow of Nausea", "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", + "item.ragium.alclad_plate": "Alclad Plate", "item.ragium.alumina_dust": "Alumina Dust", "item.ragium.alumina_solution_bucket": "Alumina Solution Bucket", "item.ragium.aluminum_ingot": "Aluminum Ingot", @@ -204,11 +209,17 @@ "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", + "item.ragium.calcium_carbonate_dust": "Calcium Carbonate Dust", + "item.ragium.calcium_hydroxide_solution_bucket": "Calcium Hydroxide Solution Bucket", + "item.ragium.calcium_oxide_dust": "Calcium Oxide Dust", + "item.ragium.carbon_dioxide_bucket": "Carbon Dioxide Bucket", "item.ragium.carbon_dust": "Carbon Dust", + "item.ragium.carbon_fiber": "Carbon Fiber", + "item.ragium.cement": "Cement", + "item.ragium.cfrp_plate": "CFRP Plate", "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", - "item.ragium.circuit_board": "Circuit Board", "item.ragium.circuit_chip": "Circuit Chip", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_dust": "Coal Dust", @@ -258,16 +269,17 @@ "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.mortar": "Mortar", "item.ragium.naphtha_bucket": "Naphtha Bucket", "item.ragium.netherite_dust": "Netherite Dust", "item.ragium.netherite_gear": "Netherite Gear", "item.ragium.netherite_nugget": "Netherite Nugget", "item.ragium.niter_dust": "Niter Dust", "item.ragium.nitric_acid_bucket": "Nitric Acid Bucket", + "item.ragium.nitrogen_bucket": "Nitrogen Bucket", "item.ragium.obsidian_dust": "Obsidian Dust", "item.ragium.ominous_flux_bucket": "Ominous Flux Bucket", "item.ragium.orange_dye_bucket": "Orange Dye Bucket", - "item.ragium.ore_slurry_bucket": "%1$s Bucket", "item.ragium.oxygen_bucket": "Oxygen Bucket", "item.ragium.paper_dust": "Paper Pulp", "item.ragium.particle_board": "Particle Board", @@ -282,8 +294,10 @@ "item.ragium.red_dye_bucket": "Red Dye Bucket", "item.ragium.resin_bucket": "Resin Bucket", "item.ragium.salt_dust": "Salt Dust", + "item.ragium.salt_water_bucket": "Salt Water Bucket", "item.ragium.silicon_dust": "Silicon Dust", "item.ragium.silicon_wafer": "Silicon Wafer", + "item.ragium.sodium_carbonate_dust": "Sodium Carbonate Dust", "item.ragium.sodium_hydroxide_solution_bucket": "Sodium Hydroxide Solution Bucket", "item.ragium.sooty_iron_axe": "Sooty Iron Axe", "item.ragium.sooty_iron_hoe": "Sooty Iron Hoe", @@ -293,6 +307,7 @@ "item.ragium.sooty_iron_shovel": "Sooty Iron Shovel", "item.ragium.sooty_iron_sword": "Sooty Iron Sword", "item.ragium.splash_bottle": "Splash Bottle", + "item.ragium.sticky_ball": "Sticky Ball", "item.ragium.sulfur_dioxide_bucket": "Sulfur Dioxide Bucket", "item.ragium.sulfur_dust": "Sulfur Dust", "item.ragium.sulfur_trioxide_bucket": "Sulfur Trioxide Bucket", @@ -315,14 +330,55 @@ "item.ragium.wood_gear": "Wood Gear", "item.ragium.wood_tar_bucket": "Wood Tar Bucket", "item.ragium.yellow_dye_bucket": "Yellow Dye Bucket", - "ragium.ore_slurry_data.ragium.copper": "Copper Ore Slurry", - "ragium.ore_slurry_data.ragium.gold": "Gold Ore Slurry", - "ragium.ore_slurry_data.ragium.iron": "Iron Ore Slurry", - "ragium.ore_slurry_data.ragium.netherite_scrap": "Ancient Debris Slurry", + "ragium.chemical.ragium.aluminum": "Aluminum", + "ragium.chemical.ragium.aluminum_oxide": "Aluminum Oxide", + "ragium.chemical.ragium.carbon": "Carbon", + "ragium.chemical.ragium.chlorine": "Chlorine", + "ragium.chemical.ragium.copper": "Copper", + "ragium.chemical.ragium.cryolite": "Cryolite", + "ragium.chemical.ragium.diamond": "Diamond", + "ragium.chemical.ragium.fluorite": "Fluorite", + "ragium.chemical.ragium.gold": "Gold", + "ragium.chemical.ragium.hydrogen": "Hydrogen", + "ragium.chemical.ragium.hydrogen_chloride": "Hydrogen chloride", + "ragium.chemical.ragium.hydrogen_fluoride": "Hydrogen Fluoride", + "ragium.chemical.ragium.hydroxide": "Hydroxide", + "ragium.chemical.ragium.iron": "Iron", + "ragium.chemical.ragium.nitrate": "Nitrate", + "ragium.chemical.ragium.nitric_acid": "Nitric Acid", + "ragium.chemical.ragium.nitrogen": "Nitrogen", + "ragium.chemical.ragium.oxygen": "Oxygen", + "ragium.chemical.ragium.potassium_nitrate": "Potassium Nitrate", + "ragium.chemical.ragium.silicon": "Silicon", + "ragium.chemical.ragium.silicon_dioxide": "Silicon Dioxide", + "ragium.chemical.ragium.sodium_chloride": "Sodium Chloride", + "ragium.chemical.ragium.sodium_hydroxide": "Sodium Hydroxide", + "ragium.chemical.ragium.sulfate": "Sulfate", + "ragium.chemical.ragium.sulfur": "Sulfur", + "ragium.chemical.ragium.sulfur_dioxide": "Sulfur Dioxide", + "ragium.chemical.ragium.sulfur_trioxide": "Sulfur Trioxide", + "ragium.chemical.ragium.sulfuric_acid": "Sulfuric Acid", + "ragium.chemical.ragium.water": "Water", + "ragium.element.ragium.aluminum": "Aluminum", + "ragium.element.ragium.calcium": "Calcium", + "ragium.element.ragium.carbon": "Carbon", + "ragium.element.ragium.chlorine": "Chlorine", + "ragium.element.ragium.copper": "Copper", + "ragium.element.ragium.fluorine": "Fluorine", + "ragium.element.ragium.gold": "Gold", + "ragium.element.ragium.hydrogen": "Hydrogen", + "ragium.element.ragium.iron": "Iron", + "ragium.element.ragium.nitrogen": "Nitrogen", + "ragium.element.ragium.oxygen": "Oxygen", + "ragium.element.ragium.potassium": "Potassium", + "ragium.element.ragium.silicon": "Silicon", + "ragium.element.ragium.sodium": "Sodium", + "ragium.element.ragium.sulfur": "Sulfur", "recipe_type.ragium.alloying": "Alloying", "recipe_type.ragium.assembling": "Assembling", "recipe_type.ragium.bathing": "Chemical Bathing", "recipe_type.ragium.brewing": "Brewing", + "recipe_type.ragium.centrifuging": "Centrifuging", "recipe_type.ragium.compressing": "Compressing", "recipe_type.ragium.crushing": "Crushing", "recipe_type.ragium.cutting": "Cutting", @@ -338,10 +394,13 @@ "recipe_type.ragium.reacting": "Chemical Reacting", "recipe_type.ragium.refining": "Refining", "recipe_type.ragium.resource.extracting": "Resource Extracting", + "recipe_type.ragium.washing": "Washing", "tag.fluid.c.alumina_solution": "Alumina Solution", "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", "tag.fluid.c.bleach": "Bleach", + "tag.fluid.c.calcium_hydroxide_solution": "Calcium Hydroxide Solution", + "tag.fluid.c.carbon_dioxide": "Carbon Dioxide", "tag.fluid.c.chlorine": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", "tag.fluid.c.crude_oil": "Crude Oil", @@ -375,9 +434,11 @@ "tag.fluid.c.molten_redstone": "Destabilized Redstone", "tag.fluid.c.naphtha": "Naphtha", "tag.fluid.c.nitric_acid": "Nitric Acid", + "tag.fluid.c.nitrogen": "Nitrogen", "tag.fluid.c.ominous_flux": "Ominous Flux", "tag.fluid.c.oxygen": "Oxygen", "tag.fluid.c.resin": "Resin", + "tag.fluid.c.salt_water": "Salt Water", "tag.fluid.c.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "tag.fluid.c.sulfur_dioxide": "Sulfur Dioxide", "tag.fluid.c.sulfur_trioxide": "Sulfur Trioxide", @@ -388,6 +449,8 @@ "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.calcium_hydroxide_solution": "Calcium Hydroxide Solution Bucket", + "tag.item.c.buckets.carbon_dioxide": "Carbon Dioxide Bucket", "tag.item.c.buckets.chlorine": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", "tag.item.c.buckets.crude_oil": "Crude Oil Bucket", @@ -421,9 +484,11 @@ "tag.item.c.buckets.molten_redstone": "Destabilized Redstone Bucket", "tag.item.c.buckets.naphtha": "Naphtha Bucket", "tag.item.c.buckets.nitric_acid": "Nitric Acid Bucket", + "tag.item.c.buckets.nitrogen": "Nitrogen Bucket", "tag.item.c.buckets.ominous_flux": "Ominous Flux Bucket", "tag.item.c.buckets.oxygen": "Oxygen Bucket", "tag.item.c.buckets.resin": "Resin Bucket", + "tag.item.c.buckets.salt_water": "Salt Water Bucket", "tag.item.c.buckets.sodium_hydroxide_solution": "Sodium Hydroxide Solution Bucket", "tag.item.c.buckets.sulfur_dioxide": "Sulfur Dioxide Bucket", "tag.item.c.buckets.sulfur_trioxide": "Sulfur Trioxide Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index fae291e3f8..ef204c5a69 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -31,6 +31,8 @@ "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", + "block.ragium.calcium_hydroxide_solution": "水酸化カルシウム水溶液", + "block.ragium.carbon_dioxide": "二酸化炭素", "block.ragium.charcoal_block": "木炭ブロック", "block.ragium.chemical_bath": "化学浴槽", "block.ragium.chemical_machine_casing": "機械筐体 (化学)", @@ -54,6 +56,7 @@ "block.ragium.electrolyzer": "電解機", "block.ragium.electronics_machine_casing": "機械筐体 (電子)", "block.ragium.enchanter": "エンチャンター", + "block.ragium.fluid_output_bus": "液体搬出バス", "block.ragium.fluorite_block": "蛍石ブロック", "block.ragium.fluorite_slab": "蛍石のハーフブロック", "block.ragium.fluorite_stairs": "蛍石の階段", @@ -86,9 +89,9 @@ "block.ragium.nether_sulfur_ore": "ネザー硫黄鉱石", "block.ragium.niter_ore": "硝石鉱石", "block.ragium.nitric_acid": "硝酸", + "block.ragium.nitrogen": "窒素", "block.ragium.ominous_flux": "不吉な流動体", "block.ragium.orange_dye": "橙色の染料", - "block.ragium.ore_slurry": "無効な鉱石泥", "block.ragium.oxygen": "酸素", "block.ragium.pink_dye": "桃色の染料", "block.ragium.pitch_coke_block": "ピッチコークスブロック", @@ -99,6 +102,7 @@ "block.ragium.red_dye": "赤色の染料", "block.ragium.refinery": "精製機", "block.ragium.resin": "樹脂", + "block.ragium.salt_water": "塩水", "block.ragium.scanner": "レーザースキャナ", "block.ragium.smelter": "製錬炉", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", @@ -185,6 +189,7 @@ "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", "item.minecraft.tipped_arrow.effect.nausea": "吐き気の矢", "item.minecraft.tipped_arrow.effect.wither": "衰退の矢", + "item.ragium.alclad_plate": "アルクラッド板", "item.ragium.alumina_dust": "アルミナの粉", "item.ragium.alumina_solution_bucket": "アルミナ水溶液入りバケツ", "item.ragium.aluminum_ingot": "アルミニウムインゴット", @@ -204,11 +209,17 @@ "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", + "item.ragium.calcium_carbonate_dust": "炭酸カルシウムの粉", + "item.ragium.calcium_hydroxide_solution_bucket": "水酸化カルシウム水溶液入りバケツ", + "item.ragium.calcium_oxide_dust": "酸化カルシウムの粉", + "item.ragium.carbon_dioxide_bucket": "二酸化炭素入りバケツ", "item.ragium.carbon_dust": "炭素の粉", + "item.ragium.carbon_fiber": "炭素繊維", + "item.ragium.cement": "セメント", + "item.ragium.cfrp_plate": "炭素繊維強化プラスチック板", "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", - "item.ragium.circuit_board": "回路基板", "item.ragium.circuit_chip": "回路チップ", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", @@ -258,16 +269,17 @@ "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", "item.ragium.molten_glowstone_bucket": "活性グロウストーン入りバケツ", "item.ragium.molten_redstone_bucket": "励起レッドストーン入りバケツ", + "item.ragium.mortar": "モルタル", "item.ragium.naphtha_bucket": "ナフサ入りバケツ", "item.ragium.netherite_dust": "ネザライトの粉", "item.ragium.netherite_gear": "ネザライトの歯車", "item.ragium.netherite_nugget": "ネザライトナゲット", "item.ragium.niter_dust": "硝石の粉", "item.ragium.nitric_acid_bucket": "硝酸入りバケツ", + "item.ragium.nitrogen_bucket": "窒素入りバケツ", "item.ragium.obsidian_dust": "黒曜石の粉", "item.ragium.ominous_flux_bucket": "不吉な流動体入りバケツ", "item.ragium.orange_dye_bucket": "橙色の染料入りバケツ", - "item.ragium.ore_slurry_bucket": "%1$s入りバケツ", "item.ragium.oxygen_bucket": "酸素入りバケツ", "item.ragium.paper_dust": "紙パルプ", "item.ragium.particle_board": "パーティクルボード", @@ -282,8 +294,10 @@ "item.ragium.red_dye_bucket": "赤色の染料入りバケツ", "item.ragium.resin_bucket": "樹脂入りバケツ", "item.ragium.salt_dust": "食塩の粉", + "item.ragium.salt_water_bucket": "塩水入りバケツ", "item.ragium.silicon_dust": "シリコンの粉", "item.ragium.silicon_wafer": "シリコンウェハ", + "item.ragium.sodium_carbonate_dust": "炭酸ナトリウムの粉", "item.ragium.sodium_hydroxide_solution_bucket": "水酸化ナトリウム水溶液入りバケツ", "item.ragium.sooty_iron_axe": "煤鉄の斧", "item.ragium.sooty_iron_hoe": "煤鉄のクワ", @@ -293,6 +307,7 @@ "item.ragium.sooty_iron_shovel": "煤鉄のショベル", "item.ragium.sooty_iron_sword": "煤鉄の剣", "item.ragium.splash_bottle": "スプラッシュ瓶", + "item.ragium.sticky_ball": "粘着質な塊", "item.ragium.sulfur_dioxide_bucket": "二酸化硫黄入りバケツ", "item.ragium.sulfur_dust": "硫黄の粉", "item.ragium.sulfur_trioxide_bucket": "三酸化硫黄入りバケツ", @@ -315,14 +330,55 @@ "item.ragium.wood_gear": "木の歯車", "item.ragium.wood_tar_bucket": "木タール入りバケツ", "item.ragium.yellow_dye_bucket": "黄色の染料入りバケツ", - "ragium.ore_slurry_data.ragium.copper": "銅の鉱石泥", - "ragium.ore_slurry_data.ragium.gold": "金の鉱石泥", - "ragium.ore_slurry_data.ragium.iron": "鉄の鉱石泥", - "ragium.ore_slurry_data.ragium.netherite_scrap": "古代の鉱石泥", + "ragium.chemical.ragium.aluminum": "アルミニウム", + "ragium.chemical.ragium.aluminum_oxide": "酸化アルミニウム", + "ragium.chemical.ragium.carbon": "炭素", + "ragium.chemical.ragium.chlorine": "塩素", + "ragium.chemical.ragium.copper": "銅", + "ragium.chemical.ragium.cryolite": "氷晶石", + "ragium.chemical.ragium.diamond": "ダイヤモンド", + "ragium.chemical.ragium.fluorite": "蛍石", + "ragium.chemical.ragium.gold": "金", + "ragium.chemical.ragium.hydrogen": "水素", + "ragium.chemical.ragium.hydrogen_chloride": "塩化水素", + "ragium.chemical.ragium.hydrogen_fluoride": "フッ化水素", + "ragium.chemical.ragium.hydroxide": "水酸化物", + "ragium.chemical.ragium.iron": "鉄", + "ragium.chemical.ragium.nitrate": "硝酸塩", + "ragium.chemical.ragium.nitric_acid": "硝酸", + "ragium.chemical.ragium.nitrogen": "窒素", + "ragium.chemical.ragium.oxygen": "酸素", + "ragium.chemical.ragium.potassium_nitrate": "硝酸カリウム", + "ragium.chemical.ragium.silicon": "ケイ素", + "ragium.chemical.ragium.silicon_dioxide": "二酸化ケイ素", + "ragium.chemical.ragium.sodium_chloride": "塩化ナトリウム", + "ragium.chemical.ragium.sodium_hydroxide": "水酸化ナトリウム", + "ragium.chemical.ragium.sulfate": "硫酸塩", + "ragium.chemical.ragium.sulfur": "硫黄", + "ragium.chemical.ragium.sulfur_dioxide": "二酸化硫黄", + "ragium.chemical.ragium.sulfur_trioxide": "三酸化硫黄", + "ragium.chemical.ragium.sulfuric_acid": "硫酸", + "ragium.chemical.ragium.water": "水", + "ragium.element.ragium.aluminum": "アルミニウム", + "ragium.element.ragium.calcium": "カルシウム", + "ragium.element.ragium.carbon": "炭素", + "ragium.element.ragium.chlorine": "塩素", + "ragium.element.ragium.copper": "銅", + "ragium.element.ragium.fluorine": "フッ素", + "ragium.element.ragium.gold": "金", + "ragium.element.ragium.hydrogen": "水素", + "ragium.element.ragium.iron": "鉄", + "ragium.element.ragium.nitrogen": "窒素", + "ragium.element.ragium.oxygen": "酸素", + "ragium.element.ragium.potassium": "カリウム", + "ragium.element.ragium.silicon": "ケイ素", + "ragium.element.ragium.sodium": "ナトリウム", + "ragium.element.ragium.sulfur": "硫黄", "recipe_type.ragium.alloying": "合金", "recipe_type.ragium.assembling": "組立", "recipe_type.ragium.bathing": "化学洗浄", "recipe_type.ragium.brewing": "醸造", + "recipe_type.ragium.centrifuging": "遠心分離", "recipe_type.ragium.compressing": "圧縮", "recipe_type.ragium.crushing": "粉砕", "recipe_type.ragium.cutting": "切断", @@ -338,10 +394,13 @@ "recipe_type.ragium.reacting": "化学反応", "recipe_type.ragium.refining": "蒸留", "recipe_type.ragium.resource.extracting": "資源採集", + "recipe_type.ragium.washing": "洗浄", "tag.fluid.c.alumina_solution": "アルミナ水溶液", "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", "tag.fluid.c.bleach": "漂白剤", + "tag.fluid.c.calcium_hydroxide_solution": "水酸化カルシウム水溶液", + "tag.fluid.c.carbon_dioxide": "二酸化炭素", "tag.fluid.c.chlorine": "塩素", "tag.fluid.c.coal_tar": "石炭タール", "tag.fluid.c.crude_oil": "原油", @@ -375,9 +434,11 @@ "tag.fluid.c.molten_redstone": "励起レッドストーン", "tag.fluid.c.naphtha": "ナフサ", "tag.fluid.c.nitric_acid": "硝酸", + "tag.fluid.c.nitrogen": "窒素", "tag.fluid.c.ominous_flux": "不吉な流動体", "tag.fluid.c.oxygen": "酸素", "tag.fluid.c.resin": "樹脂", + "tag.fluid.c.salt_water": "塩水", "tag.fluid.c.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "tag.fluid.c.sulfur_dioxide": "二酸化硫黄", "tag.fluid.c.sulfur_trioxide": "三酸化硫黄", @@ -388,6 +449,8 @@ "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", "tag.item.c.buckets.bleach": "漂白剤入りバケツ", + "tag.item.c.buckets.calcium_hydroxide_solution": "水酸化カルシウム水溶液入りバケツ", + "tag.item.c.buckets.carbon_dioxide": "二酸化炭素入りバケツ", "tag.item.c.buckets.chlorine": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", "tag.item.c.buckets.crude_oil": "原油入りバケツ", @@ -421,9 +484,11 @@ "tag.item.c.buckets.molten_redstone": "励起レッドストーン入りバケツ", "tag.item.c.buckets.naphtha": "ナフサ入りバケツ", "tag.item.c.buckets.nitric_acid": "硝酸入りバケツ", + "tag.item.c.buckets.nitrogen": "窒素入りバケツ", "tag.item.c.buckets.ominous_flux": "不吉な流動体入りバケツ", "tag.item.c.buckets.oxygen": "酸素入りバケツ", "tag.item.c.buckets.resin": "樹脂入りバケツ", + "tag.item.c.buckets.salt_water": "塩水入りバケツ", "tag.item.c.buckets.sodium_hydroxide_solution": "水酸化ナトリウム水溶液入りバケツ", "tag.item.c.buckets.sulfur_dioxide": "二酸化硫黄入りバケツ", "tag.item.c.buckets.sulfur_trioxide": "三酸化硫黄入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json new file mode 100644 index 0000000000..67032282f0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/water_still" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer.json b/src/generated/resources/assets/ragium/models/block/electrolyzer.json index 871ea10fd4..92bd9d14eb 100644 --- a/src/generated/resources/assets/ragium/models/block/electrolyzer.json +++ b/src/generated/resources/assets/ragium/models/block/electrolyzer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/electrolyzer_front", - "side": "ragium:block/machine/chemical_side", + "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/fluid_output_bus.json b/src/generated/resources/assets/ragium/models/block/fluid_output_bus.json new file mode 100644 index 0000000000..bd83ffe6ca --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluid_output_bus.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "ragium:block/fluid_output_bus_bottom", + "side": "ragium:block/fluid_output_bus_side", + "top": "ragium:block/fluid_output_bus_top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/salt_water.json b/src/generated/resources/assets/ragium/models/block/salt_water.json new file mode 100644 index 0000000000..67032282f0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/salt_water.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/water_still" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/circuit_board.json b/src/generated/resources/assets/ragium/models/item/alclad_plate.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/circuit_board.json rename to src/generated/resources/assets/ragium/models/item/alclad_plate.json index 7ab696f845..1bfef98d0f 100644 --- a/src/generated/resources/assets/ragium/models/item/circuit_board.json +++ b/src/generated/resources/assets/ragium/models/item/alclad_plate.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/circuit_board" + "layer0": "ragium:item/alclad_plate" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json new file mode 100644 index 0000000000..1354ddc0ea --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/calcium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json new file mode 100644 index 0000000000..4b827ffa6a --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/carbon_fiber.json b/src/generated/resources/assets/ragium/models/item/carbon_fiber.json new file mode 100644 index 0000000000..3e544adc15 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/carbon_fiber.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/carbon_fiber" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cement.json b/src/generated/resources/assets/ragium/models/item/cement.json new file mode 100644 index 0000000000..8562dfd76d --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cement.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cfrp_plate.json b/src/generated/resources/assets/ragium/models/item/cfrp_plate.json new file mode 100644 index 0000000000..bd333972c9 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cfrp_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cfrp_plate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mortar.json b/src/generated/resources/assets/ragium/models/item/mortar.json new file mode 100644 index 0000000000..9921905530 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/mortar.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json new file mode 100644 index 0000000000..f1e838bbef --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/sticky_ball.json b/src/generated/resources/assets/ragium/models/item/sticky_ball.json new file mode 100644 index 0000000000..305ca35ab2 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/sticky_ball.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/sticky_ball" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json new file mode 100644 index 0000000000..f40a727e73 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json @@ -0,0 +1,6 @@ +{ + "values": [ + "ragium:calcium_hydroxide_solution", + "ragium:flowing_calcium_hydroxide_solution" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json b/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json new file mode 100644 index 0000000000..569a44033f --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:carbon_dioxide" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/gaseous.json b/src/generated/resources/data/c/tags/fluid/gaseous.json index 1f94bcb1d7..db825acbd3 100644 --- a/src/generated/resources/data/c/tags/fluid/gaseous.json +++ b/src/generated/resources/data/c/tags/fluid/gaseous.json @@ -1,9 +1,11 @@ { "values": [ + "#c:carbon_dioxide", "#c:chlorine", "#c:hydrogen", "#c:hydrogen_chloride", "#c:hydrogen_fluoride", + "#c:nitrogen", "#c:oxygen", "#c:sulfur_dioxide", "#c:sulfur_trioxide" diff --git a/src/generated/resources/data/c/tags/fluid/nitrogen.json b/src/generated/resources/data/c/tags/fluid/nitrogen.json new file mode 100644 index 0000000000..15f7aadae1 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/nitrogen.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:nitrogen" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/ore_slurry.json b/src/generated/resources/data/c/tags/fluid/ore_slurry.json deleted file mode 100644 index 1466234804..0000000000 --- a/src/generated/resources/data/c/tags/fluid/ore_slurry.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:ore_slurry" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/salt_water.json b/src/generated/resources/data/c/tags/fluid/salt_water.json new file mode 100644 index 0000000000..d7f9e601b7 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/salt_water.json @@ -0,0 +1,6 @@ +{ + "values": [ + "ragium:flowing_salt_water", + "ragium:salt_water" + ] +} \ 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 fc1fe9cb84..d2f068b5f0 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -4,6 +4,8 @@ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", "#c:buckets/bleach", + "#c:buckets/calcium_hydroxide_solution", + "#c:buckets/carbon_dioxide", "#c:buckets/chlorine", "#c:buckets/coal_tar", "#c:buckets/crude_oil", @@ -37,11 +39,12 @@ "#c:buckets/molten_redstone", "#c:buckets/naphtha", "#c:buckets/nitric_acid", + "#c:buckets/nitrogen", "#c:buckets/ominous_flux", - "#c:buckets/ore_slurry", "#c:buckets/oxygen", "#c:buckets/potion", "#c:buckets/resin", + "#c:buckets/salt_water", "#c:buckets/sodium_hydroxide_solution", "#c:buckets/sulfur_dioxide", "#c:buckets/sulfur_trioxide", diff --git a/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json new file mode 100644 index 0000000000..021779374c --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_hydroxide_solution_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json b/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json new file mode 100644 index 0000000000..ec0f9fc7c5 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:carbon_dioxide_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/nitrogen.json b/src/generated/resources/data/c/tags/item/buckets/nitrogen.json new file mode 100644 index 0000000000..c44e29e2e3 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/nitrogen.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:nitrogen_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json b/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json deleted file mode 100644 index 588595b609..0000000000 --- a/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:ore_slurry_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/salt_water.json b/src/generated/resources/data/c/tags/item/buckets/salt_water.json new file mode 100644 index 0000000000..d49d534f74 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/salt_water.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:salt_water_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index 4decc30e59..aac1387a8a 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -4,6 +4,8 @@ "#c:dusts/amethyst", "#c:dusts/bauxite", "#c:dusts/borax", + "#c:dusts/calcium_carbonate", + "#c:dusts/calcium_oxide", "#c:dusts/carbon", "#c:dusts/charcoal", "#c:dusts/coal", @@ -26,6 +28,7 @@ "#c:dusts/raginite", "#c:dusts/salt", "#c:dusts/silicon", + "#c:dusts/sodium_carbonate", "#c:dusts/sulfur", "#c:dusts/wood" ] diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json new file mode 100644 index 0000000000..5bad65c1ff --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_carbonate_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json b/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json new file mode 100644 index 0000000000..fba81a24e4 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_oxide_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json new file mode 100644 index 0000000000..487d2b7ca9 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:sodium_carbonate_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/sticky_balls.json b/src/generated/resources/data/c/tags/item/sticky_balls.json index a99bc9dea4..f9f3b65211 100644 --- a/src/generated/resources/data/c/tags/item/sticky_balls.json +++ b/src/generated/resources/data/c/tags/item/sticky_balls.json @@ -1,5 +1,6 @@ { "values": [ - "#c:slime_balls" + "#c:slime_balls", + "ragium:sticky_ball" ] } \ 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 40996203de..495774f843 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -26,6 +26,7 @@ "ragium:electrolyzer", "ragium:electronics_machine_casing", "ragium:enchanter", + "ragium:fluid_output_bus", "ragium:fluorite_block", "ragium:fluorite_slab", "ragium:fluorite_stairs", diff --git a/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json b/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json new file mode 100644 index 0000000000..689aeadd8d --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name", + "ragium:owner_id", + "ragium:fluid" + ], + "source": "block_entity" + } + ], + "name": "ragium:fluid_output_bus" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/fluid_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/aluminum.json b/src/generated/resources/data/ragium/ragium/chemical/aluminum.json new file mode 100644 index 0000000000..9906ab68db --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/aluminum.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:aluminum" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/aluminum_oxide.json b/src/generated/resources/data/ragium/ragium/chemical/aluminum_oxide.json new file mode 100644 index 0000000000..1b6ef7a3f1 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/aluminum_oxide.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:aluminum", + "weight": 2 + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/carbon.json b/src/generated/resources/data/ragium/ragium/chemical/carbon.json new file mode 100644 index 0000000000..ddb636aff4 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/carbon.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:carbon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/chlorine.json b/src/generated/resources/data/ragium/ragium/chemical/chlorine.json new file mode 100644 index 0000000000..a6de7fe918 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/chlorine.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:chlorine", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/copper.json b/src/generated/resources/data/ragium/ragium/chemical/copper.json new file mode 100644 index 0000000000..2064f74721 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/copper.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:copper" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/cryolite.json b/src/generated/resources/data/ragium/ragium/chemical/cryolite.json new file mode 100644 index 0000000000..2fc87e4293 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/cryolite.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium", + "weight": 3 + }, + { + "element": "ragium:aluminum" + }, + { + "element": "ragium:fluorine", + "weight": 6 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/diamond.json b/src/generated/resources/data/ragium/ragium/chemical/diamond.json new file mode 100644 index 0000000000..ddb636aff4 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/diamond.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:carbon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/fluorite.json b/src/generated/resources/data/ragium/ragium/chemical/fluorite.json new file mode 100644 index 0000000000..f8fce3ded7 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/fluorite.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:calcium" + }, + { + "element": "ragium:fluorine", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/gold.json b/src/generated/resources/data/ragium/ragium/chemical/gold.json new file mode 100644 index 0000000000..06a9e6d5ec --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/gold.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:gold" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json new file mode 100644 index 0000000000..fa11358a92 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:hydrogen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json new file mode 100644 index 0000000000..391e33091d --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen" + }, + { + "element": "ragium:chlorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json new file mode 100644 index 0000000000..8a2706b7f8 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen" + }, + { + "element": "ragium:fluorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json b/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json new file mode 100644 index 0000000000..4e59fd3381 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:oxygen" + }, + { + "element": "ragium:hydrogen" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/iron.json b/src/generated/resources/data/ragium/ragium/chemical/iron.json new file mode 100644 index 0000000000..fff0d9cea4 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/iron.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:iron" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitrate.json b/src/generated/resources/data/ragium/ragium/chemical/nitrate.json new file mode 100644 index 0000000000..ee421eb5ce --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitrate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:nitrogen" + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json b/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json new file mode 100644 index 0000000000..4e67d6505b --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:nitrogen" + }, + { + "chemical": "ragium:nitrate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json b/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json new file mode 100644 index 0000000000..5edf8e564a --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:nitrogen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/oxygen.json b/src/generated/resources/data/ragium/ragium/chemical/oxygen.json new file mode 100644 index 0000000000..502fb04d78 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/oxygen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:oxygen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json b/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json new file mode 100644 index 0000000000..322dc32f9f --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:potassium" + }, + { + "chemical": "ragium:nitrate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/silicon.json b/src/generated/resources/data/ragium/ragium/chemical/silicon.json new file mode 100644 index 0000000000..43370cd44e --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/silicon.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:silicon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json b/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json new file mode 100644 index 0000000000..5d8350bafe --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:silicon" + }, + { + "element": "ragium:oxygen", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json b/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json new file mode 100644 index 0000000000..8f576d54d5 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium" + }, + { + "element": "ragium:chlorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json b/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json new file mode 100644 index 0000000000..dc22add704 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium" + }, + { + "chemical": "ragium:hydroxide" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfate.json b/src/generated/resources/data/ragium/ragium/chemical/sulfate.json new file mode 100644 index 0000000000..5210ee4472 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 4 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur.json new file mode 100644 index 0000000000..7ef322fe26 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:sulfur" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json new file mode 100644 index 0000000000..da9b702736 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json new file mode 100644 index 0000000000..a11f2ca7ae --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json b/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json new file mode 100644 index 0000000000..b3ccfc19ea --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen", + "weight": 2 + }, + { + "chemical": "ragium:sulfate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/water.json b/src/generated/resources/data/ragium/ragium/chemical/water.json new file mode 100644 index 0000000000..eb92294e2d --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/water.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen", + "weight": 2 + }, + { + "element": "ragium:oxygen" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/aluminum.json b/src/generated/resources/data/ragium/ragium/element/aluminum.json new file mode 100644 index 0000000000..924ba5d970 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/aluminum.json @@ -0,0 +1,3 @@ +{ + "symbol": "Al" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/calcium.json b/src/generated/resources/data/ragium/ragium/element/calcium.json new file mode 100644 index 0000000000..e63670375e --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/calcium.json @@ -0,0 +1,3 @@ +{ + "symbol": "Ca" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/carbon.json b/src/generated/resources/data/ragium/ragium/element/carbon.json new file mode 100644 index 0000000000..109c0c317c --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/carbon.json @@ -0,0 +1,3 @@ +{ + "symbol": "C" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/chlorine.json b/src/generated/resources/data/ragium/ragium/element/chlorine.json new file mode 100644 index 0000000000..74ee59107a --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/chlorine.json @@ -0,0 +1,3 @@ +{ + "symbol": "Cl" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/copper.json b/src/generated/resources/data/ragium/ragium/element/copper.json new file mode 100644 index 0000000000..1549e9407b --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/copper.json @@ -0,0 +1,3 @@ +{ + "symbol": "Cu" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/fluorine.json b/src/generated/resources/data/ragium/ragium/element/fluorine.json new file mode 100644 index 0000000000..47844d2535 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/fluorine.json @@ -0,0 +1,3 @@ +{ + "symbol": "F" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/gold.json b/src/generated/resources/data/ragium/ragium/element/gold.json new file mode 100644 index 0000000000..33595d5826 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/gold.json @@ -0,0 +1,3 @@ +{ + "symbol": "Au" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/hydrogen.json b/src/generated/resources/data/ragium/ragium/element/hydrogen.json new file mode 100644 index 0000000000..a7fb573d7a --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/hydrogen.json @@ -0,0 +1,3 @@ +{ + "symbol": "H" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/iron.json b/src/generated/resources/data/ragium/ragium/element/iron.json new file mode 100644 index 0000000000..d782ef4663 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/iron.json @@ -0,0 +1,3 @@ +{ + "symbol": "Fe" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/nitrogen.json b/src/generated/resources/data/ragium/ragium/element/nitrogen.json new file mode 100644 index 0000000000..14297777a4 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/nitrogen.json @@ -0,0 +1,3 @@ +{ + "symbol": "N" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/oxygen.json b/src/generated/resources/data/ragium/ragium/element/oxygen.json new file mode 100644 index 0000000000..152cab0aaa --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/oxygen.json @@ -0,0 +1,3 @@ +{ + "symbol": "O" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/potassium.json b/src/generated/resources/data/ragium/ragium/element/potassium.json new file mode 100644 index 0000000000..d46b76fb28 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/potassium.json @@ -0,0 +1,3 @@ +{ + "symbol": "K" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/silicon.json b/src/generated/resources/data/ragium/ragium/element/silicon.json new file mode 100644 index 0000000000..0ecb3ca497 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/silicon.json @@ -0,0 +1,3 @@ +{ + "symbol": "Si" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/sodium.json b/src/generated/resources/data/ragium/ragium/element/sodium.json new file mode 100644 index 0000000000..3513305853 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/sodium.json @@ -0,0 +1,3 @@ +{ + "symbol": "Na" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/sulfur.json b/src/generated/resources/data/ragium/ragium/element/sulfur.json new file mode 100644 index 0000000000..70629b6e59 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/sulfur.json @@ -0,0 +1,3 @@ +{ + "symbol": "S" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json deleted file mode 100644 index b26e843e01..0000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#c15a36", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/copper" - }, - "count": 3, - "fallback": { - "id": "ragium:copper_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json deleted file mode 100644 index 02ef20bc8f..0000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#ffcc00", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/gold" - }, - "count": 2, - "fallback": { - "id": "ragium:gold_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json deleted file mode 100644 index de10c1c784..0000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#777777", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/iron" - }, - "count": 2, - "fallback": { - "id": "ragium:iron_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json deleted file mode 100644 index d656b3144e..0000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "color": "#473e3f", - "result": { - "count": 2, - "id": "minecraft:netherite_scrap" - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.netherite_scrap" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json b/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json deleted file mode 100644 index 6b98f7f568..0000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/gold", - "c:ingots/gold" - ] - } - }, - "ingredient": { - "count": 1, - "items": "#c:plastics" - }, - "result": { - "count": 1, - "id": "ragium:circuit_board" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/glass.json b/src/generated/resources/data/ragium/recipe/alloying/glass.json new file mode 100644 index 0000000000..45bab79f23 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/glass.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#c:dusts/sodium_carbonate" + }, + "ingredient": { + "count": 2, + "items": "#c:dusts/quartz" + }, + "result": { + "count": 6, + "id": "minecraft:glass" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json deleted file mode 100644 index b1ab1a2837..0000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "ragium:alloying", - "extras": [ - { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/copper", - "c:ingots/copper" - ] - } - }, - { - "count": 1, - "items": "#c:dusts/obsidian" - } - ], - "ingredient": { - "count": 3, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/aluminum", - "c:ingots/aluminum" - ] - } - }, - "result": { - "count": 4, - "id": "ragium:black_steel_ingot" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json b/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json new file mode 100644 index 0000000000..65fbd5a463 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:assembling", + "extra": { + "count": 1, + "items": "#c:ingots/copper" + }, + "ingredient": { + "count": 3, + "items": "#c:ingots/aluminum" + }, + "result": { + "count": 4, + "id": "ragium:alclad_plate" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json index aa1faac67b..8789c0a1bf 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json @@ -1,12 +1,18 @@ { "type": "ragium:assembling", - "extra": { - "count": 1, - "items": "ragium:circuit_board" - }, + "extras": [ + { + "count": 2, + "items": "ragium:circuit_chip" + }, + { + "count": 3, + "items": "#c:nuggets/gold" + } + ], "ingredient": { - "count": 2, - "items": "ragium:circuit_chip" + "count": 1, + "items": "#c:plastics" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json index 73392ae268..caf56f4281 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json @@ -1,12 +1,18 @@ { "type": "ragium:assembling", - "extra": { - "count": 1, - "items": "ragium:electric_circuit" - }, + "extras": [ + { + "count": 2, + "items": "ragium:circuit_chip" + }, + { + "count": 3, + "items": "#c:nuggets/gold" + } + ], "ingredient": { - "count": 2, - "items": "#c:ingots/void_metal" + "count": 1, + "items": "ragium:cfrp_plate" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json index e7be79da01..b0c15b8525 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json @@ -5,7 +5,7 @@ "items": "ragium:electric_circuit" }, "ingredient": { - "count": 4, + "count": 2, "items": "#c:ingots/black_steel" }, "result": { diff --git a/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json b/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json new file mode 100644 index 0000000000..0f1f140f32 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "ragium:carbon_fiber" + }, + "result": { + "count": 1, + "id": "ragium:cfrp_plate" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json b/src/generated/resources/data/ragium/recipe/bathing/mortar.json similarity index 59% rename from src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json rename to src/generated/resources/data/ragium/recipe/bathing/mortar.json index 83aab8897e..f2e35bb8d5 100644 --- a/src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json +++ b/src/generated/resources/data/ragium/recipe/bathing/mortar.json @@ -1,16 +1,16 @@ { "type": "ragium:bathing", "fluid_ingredient": { - "amount": 1000, + "amount": 250, "fluids": "#c:water" }, "item_ingredient": { "count": 1, - "items": "#c:storage_blocks/dried_kelp" + "items": "ragium:cement" }, "result": { - "count": 6, - "id": "ragium:salt_dust" + "count": 1, + "id": "ragium:mortar" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/particle_board.json b/src/generated/resources/data/ragium/recipe/bathing/particle_board.json new file mode 100644 index 0000000000..717a98c830 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/particle_board.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "#c:dusts/wood" + }, + "result": { + "count": 1, + "id": "ragium:particle_board" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json b/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json new file mode 100644 index 0000000000..14e0f73f05 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:piston" + }, + "result": { + "count": 1, + "id": "minecraft:sticky_piston" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json b/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json deleted file mode 100644 index 3e32376200..0000000000 --- a/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "ragium:bathing", - "fluid_ingredient": { - "amount": 1000, - "fluids": "#c:molten_glass" - }, - "item_ingredient": { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/amethyst", - "c:gems/amethyst" - ] - } - }, - "result": { - "count": 2, - "id": "minecraft:tinted_glass" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json new file mode 100644 index 0000000000..cd8af007b9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.15, + "ingredient": "#c:dusts/calcium_carbonate", + "result": { + "id": "ragium:calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json new file mode 100644 index 0000000000..5c40bbfb8c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.15, + "ingredient": "minecraft:dried_kelp", + "result": { + "id": "ragium:sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json b/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json new file mode 100644 index 0000000000..73a1544e3a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "minecraft:calcite" + }, + "result": { + "count": 1, + "id": "ragium:calcium_carbonate_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json b/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json deleted file mode 100644 index bb8899831b..0000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "minecraft:blue_ice" - }, - "results": [ - { - "count": 9, - "id": "minecraft:packed_ice" - }, - { - "count": 1, - "id": "ragium:cryolite_dust" - } - ], - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/red_sand.json b/src/generated/resources/data/ragium/recipe/crushing/red_sand.json index e775c57413..fa5904c680 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/red_sand.json +++ b/src/generated/resources/data/ragium/recipe/crushing/red_sand.json @@ -4,15 +4,9 @@ "count": 1, "items": "#c:sandstone/red_blocks" }, - "results": [ - { - "count": 4, - "id": "minecraft:red_sand" - }, - { - "count": 1, - "id": "ragium:bauxite_dust" - } - ], + "result": { + "count": 4, + "id": "minecraft:red_sand" + }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/sand.json b/src/generated/resources/data/ragium/recipe/crushing/sand.json index 82c9ef9e6e..74b20e6eaa 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/sand.json +++ b/src/generated/resources/data/ragium/recipe/crushing/sand.json @@ -4,15 +4,9 @@ "count": 1, "items": "#c:sandstone/uncolored_blocks" }, - "results": [ - { - "count": 4, - "id": "minecraft:sand" - }, - { - "count": 1, - "id": "ragium:niter_dust" - } - ], + "result": { + "count": 4, + "id": "minecraft:sand" + }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json index 161e77bfc9..347ee03bcc 100644 --- a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json +++ b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json @@ -1,12 +1,8 @@ { "type": "ragium:electrolyzing", - "fluid_ingredient": { + "ingredient": { "amount": 1000, - "fluids": "#c:water" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/salt" + "fluids": "#c:salt_water" }, "results": [ { diff --git a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json index b1e72301bb..af0768a996 100644 --- a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json +++ b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json @@ -1,6 +1,6 @@ { "type": "ragium:electrolyzing", - "fluid_ingredient": { + "ingredient": { "amount": 1000, "fluids": "#c:water" }, diff --git a/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json new file mode 100644 index 0000000000..97893ca52a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:freezing", + "ingredient": { + "amount": 250, + "fluids": "#ragium:resins" + }, + "result": { + "count": 1, + "id": "ragium:sticky_ball" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json b/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json new file mode 100644 index 0000000000..f025a96b03 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 1, + "items": "#c:dusts/calcium_oxide" + }, + "result": { + "amount": 1000, + "id": "ragium:calcium_hydroxide_solution" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json new file mode 100644 index 0000000000..7b68056504 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:pyrolyzing", + "fluid_result": { + "amount": 1000, + "id": "ragium:carbon_dioxide" + }, + "ingredient": { + "count": 1, + "items": "#c:dusts/calcium_carbonate" + }, + "item_result": { + "count": 1, + "id": "ragium:calcium_oxide_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json new file mode 100644 index 0000000000..fdb83b2ac0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:reacting", + "fluid_result": { + "amount": 2000, + "id": "minecraft:water" + }, + "item_result": { + "count": 1, + "id": "ragium:calcium_carbonate_dust" + }, + "primary_ingredient": { + "amount": 1000, + "fluids": "#c:calcium_hydroxide_solution" + }, + "secondary_ingredient": { + "amount": 1000, + "fluids": "#c:carbon_dioxide" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json new file mode 100644 index 0000000000..bf3369b220 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:reacting", + "fluid_result": { + "amount": 2000, + "id": "minecraft:water" + }, + "item_result": { + "count": 1, + "id": "ragium:sodium_carbonate_dust" + }, + "primary_ingredient": { + "amount": 1000, + "fluids": "#c:sodium_hydroxide_solution" + }, + "secondary_ingredient": { + "amount": 1000, + "fluids": "#c:carbon_dioxide" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json b/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json new file mode 100644 index 0000000000..82817b0d90 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:refining", + "fluid_result": { + "amount": 1000, + "id": "minecraft:water" + }, + "ingredient": { + "amount": 1000, + "fluids": "#c:salt_water" + }, + "item_result": { + "count": 1, + "id": "ragium:salt_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json b/src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json similarity index 80% rename from src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json rename to src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json index b06ae25601..48fa996a67 100644 --- a/src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json +++ b/src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json @@ -3,7 +3,7 @@ "condition": "#c:is_ocean", "result": { "amount": 4000, - "id": "minecraft:water" + "id": "ragium:salt_water" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/bricks.json b/src/generated/resources/data/ragium/recipe/shaped/bricks.json new file mode 100644 index 0000000000..e48ffb6c2e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:bricks/normal", + "B": "ragium:mortar" + }, + "pattern": [ + "AB", + "BA" + ], + "result": { + "id": "minecraft:bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json new file mode 100644 index 0000000000..328d05aa3e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "ragium:alclad_plate", + "B": "ragium:electronics_machine_parts", + "C": "#c:gears/diamond", + "D": "#minecraft:lightning_rods" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:electrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/enchanter.json b/src/generated/resources/data/ragium/recipe/shaped/enchanter.json index b1130e35af..53c0c62d93 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/enchanter.json +++ b/src/generated/resources/data/ragium/recipe/shaped/enchanter.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/void_metal", + "A": "minecraft:ghast_tear", "B": "ragium:arcane_machine_parts", "C": "#c:gears/netherite", "D": "minecraft:enchanting_table" diff --git a/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json b/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json new file mode 100644 index 0000000000..8b8cdccfa7 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:bricks/nether", + "B": "ragium:mortar" + }, + "pattern": [ + "AB", + "BA" + ], + "result": { + "id": "minecraft:nether_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json index c7ebde1de5..92293a8daf 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json +++ b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/void_metal", + "A": "ragium:alclad_plate", "B": "ragium:electronics_machine_parts", "C": "#c:gears/diamond", "D": "ragium:assembler" diff --git a/src/generated/resources/data/ragium/recipe/shapeless/cement.json b/src/generated/resources/data/ragium/recipe/shapeless/cement.json new file mode 100644 index 0000000000..3f43b9d05b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/cement.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:sands", + "#c:dusts/calcium_oxide" + ], + "result": { + "count": 2, + "id": "ragium:cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json b/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json new file mode 100644 index 0000000000..fc3c8348e1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "ragium:machine_casing", + "ragium:tank" + ], + "result": { + "id": "ragium:fluid_output_bus" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shapeless/mortar.json b/src/generated/resources/data/ragium/recipe/shapeless/mortar.json new file mode 100644 index 0000000000..e0e3b7e376 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/mortar.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:buckets/water", + "ragium:cement", + "ragium:cement", + "ragium:cement", + "ragium:cement" + ], + "result": { + "count": 4, + "id": "ragium:mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json new file mode 100644 index 0000000000..0b66d4608d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.15, + "ingredient": "#c:dusts/calcium_carbonate", + "result": { + "id": "ragium:calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json new file mode 100644 index 0000000000..d6b4c276b0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.15, + "ingredient": "minecraft:dried_kelp", + "result": { + "id": "ragium:sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json new file mode 100644 index 0000000000..edbb155e2e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:sulfuric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/copper" + }, + "result": { + "count": 3, + "id": "ragium:copper_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json new file mode 100644 index 0000000000..728d1f14be --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:nitric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/gold" + }, + "result": { + "count": 2, + "id": "ragium:gold_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json new file mode 100644 index 0000000000..ff9a3337c3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:sulfuric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/iron" + }, + "result": { + "count": 2, + "id": "ragium:iron_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json b/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json new file mode 100644 index 0000000000..efc2d1ba4b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:hydrofluoric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:ancient_debris" + }, + "result": { + "count": 3, + "id": "minecraft:netherite_scrap" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/packed_ice.json b/src/generated/resources/data/ragium/recipe/washing/packed_ice.json new file mode 100644 index 0000000000..582d0174f1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/packed_ice.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:hydrofluoric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:blue_ice" + }, + "results": [ + { + "count": 6, + "id": "minecraft:packed_ice" + }, + { + "count": 1, + "id": "ragium:cryolite" + } + ], + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json new file mode 100644 index 0000000000..654c22b8aa --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 4, + "items": "#c:sands/red" + }, + "results": [ + { + "count": 3, + "id": "ragium:quartz_dust" + }, + { + "count": 1, + "id": "ragium:bauxite_dust" + } + ], + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json new file mode 100644 index 0000000000..ff7b409dc2 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 4, + "items": "#c:sands/colorless" + }, + "results": [ + { + "count": 3, + "id": "ragium:quartz_dust" + }, + { + "count": 1, + "id": "ragium:borax_dust" + } + ], + "time": 200 +} \ 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 72f0688681..e851b26289 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/block/machines/chemical.json @@ -2,7 +2,6 @@ "values": [ "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 index 1be45a33dc..2be2125c5e 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/electronics.json +++ b/src/generated/resources/data/ragium/tags/block/machines/electronics.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:electrolyzer", "ragium:precision_assembler", "ragium:scanner" ] 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 72f0688681..e851b26289 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/item/machines/chemical.json @@ -2,7 +2,6 @@ "values": [ "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 index 1be45a33dc..2be2125c5e 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/electronics.json +++ b/src/generated/resources/data/ragium/tags/item/machines/electronics.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:electrolyzer", "ragium:precision_assembler", "ragium:scanner" ] diff --git a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json index 29217b0ffd..a056d1d159 100644 --- a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json +++ b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json @@ -1,6 +1,7 @@ { "values": [ "ragium:creative_tank", + "ragium:fluid_output_bus", "ragium:tank", "ragium:void_tank" ] diff --git a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt index e1532670aa..311b5adaee 100644 --- a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt +++ b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt @@ -72,6 +72,9 @@ data object HTConstants { const val POTIONS = "potions" const val BOTTLE_TYPE = "bottle_type" + const val ELEMENT = "element" + const val CHEMICAL = "chemical" + // Recipes // // Vanilla diff --git a/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt b/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt index 61d6e86790..ddf19ac3bf 100644 --- a/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt +++ b/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt @@ -42,9 +42,7 @@ interface HTMultiCapability { level: ServerLevel, pos: BlockPos, side: Direction?, - validator: BooleanSupplier = BooleanSupplier { - true - }, + validator: BooleanSupplier = BooleanSupplier { true }, listener: Runnable = Runnables.doNothing() ): BlockCapabilityCache = BlockCapabilityCache.create(block, level, pos, side, validator, listener) diff --git a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt index f2cfa19f0f..591b9ae5ab 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt @@ -7,7 +7,6 @@ import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTPotionContent import hiiragi283.lib.resource.toLanguageKey import hiiragi283.lib.text.HTHasTranslationKey -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.data.PackOutput import net.minecraft.resources.ResourceKey import net.minecraft.world.item.enchantment.Enchantment @@ -49,14 +48,28 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H add(translatable, pattern.translate(langType, name)) } + /** + * @since 26.1.8 + */ + fun addFromKey(key: ResourceKey<*>, value: String) { + add(key.toLanguageKey(), value) + } + + /** + * @since 26.1.8 + */ + fun addFromKey(key: ResourceKey<*>, suffix: String, value: String) { + add(key.toLanguageKey(suffix), value) + } + /** * エンチャントの翻訳名を追加します。 * @param value エンチャントの翻訳名 * @param desc エンチャントの説明 */ protected fun addEnchantment(key: ResourceKey, value: String, desc: String) { - add(key.toLanguageKey(), value) - add(key.toLanguageKey("desc"), desc) + addFromKey(key, value) + addFromKey(key, "desc", desc) } /** @@ -92,11 +105,4 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H add("item.minecraft.lingering_potion.effect.$name", LINGERING_POTION_PATTERN.translate(langType, value)) add("item.minecraft.tipped_arrow.effect.$name", TIPPED_ARROW_PATTERN.translate(langType, value)) } - - /** - * @since 26.1.5 - */ - fun addOreSlurry(key: ResourceKey, value: String) { - add(key.toLanguageKey(), value) - } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt new file mode 100644 index 0000000000..fb5eea8b7b --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt @@ -0,0 +1,66 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.recipe.builder + +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.util.HTDelegates +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 1種類の液体から2種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +class HTFluidToDoubleFluidRecipeBuilder>(prefix: String, private val factory: Factory) : + HTProgressRecipeBuilder(prefix) { + override fun getRecipeId(): Identifier? = results.first().getId() + + override fun createRecipe(): RECIPE = factory.create(ingredient, results.toNel(), progressData) + + // Ingredient + @PublishedApi internal var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() + + operator fun HTFluidIngredient.unaryPlus() { + ingredient = this + } + + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal val results: MutableList = ObjectArrayList() + + inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + results += HTFluidResultBuilder.build(builderAction) + } + + // Factory // + + /** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ + fun interface Factory { + fun create(ingredient: HTFluidIngredient, results: Nel, progressData: HTProgressData): RECIPE + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt deleted file mode 100644 index 33ad0d0678..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt +++ /dev/null @@ -1,95 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -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 -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.util.HTDelegates -import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -abstract class HTFluidToRecipeBuilder, out RECIPE : Recipe<*>>( - prefix: String, - private val factory: Factory -) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier? = result.getId() - - override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) - - // Ingredient - @PublishedApi internal var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() - - operator fun HTFluidIngredient.unaryPlus() { - ingredient = this - } - - inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidIngredientBuilder.build(builderAction) - } - - // Result - @PublishedApi internal var result: RESULT by HTDelegates.onceInitialize() - - operator fun RESULT.unaryPlus() { - result = this - } - - // ToFluid // - - /** - * 1種類のアイテムと液体から1種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - class ToFluid>(prefix: String, factory: Factory) : - HTFluidToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } - } - - // ToItem // - - /** - * 1種類のアイテムと液体から1種類のアイテムを作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - class ToItem>(prefix: String, factory: Factory) : - HTFluidToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - } - - // Factory // - - /** - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - fun interface Factory, out RECIPE : Any> { - fun create(ingredient: HTFluidIngredient, result: RESULT, progressData: HTProgressData): RECIPE - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt deleted file mode 100644 index 09fa1f6604..0000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt +++ /dev/null @@ -1,95 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -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 -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.util.HTDelegates -import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -abstract class HTItemToRecipeBuilder, out RECIPE : Recipe<*>>( - prefix: String, - private val factory: Factory -) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier? = result.getId() - - override fun createRecipe(): RECIPE = factory.create(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: RESULT by HTDelegates.onceInitialize() - - operator fun RESULT.unaryPlus() { - result = this - } - - // ToFluid // - - /** - * 1種類のアイテムと液体から1種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - class ToFluid>(prefix: String, factory: Factory) : - HTItemToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } - } - - // ToItem // - - /** - * 1種類のアイテムと液体から1種類のアイテムを作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - class ToItem>(prefix: String, factory: Factory) : - HTItemToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - } - - // Factory // - - /** - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - fun interface Factory, out RECIPE : Any> { - fun create(ingredient: HTItemIngredient, result: RESULT, progressData: HTProgressData): RECIPE - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt new file mode 100644 index 0000000000..55590a561d --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt @@ -0,0 +1,130 @@ +@file:OptIn(ExperimentalContracts::class) + +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.HTBasicSingleRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.HTRecipeResult +import hiiragi283.lib.util.HTDelegates +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 1種類の材料から1種類の完成品を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +open class HTSingleRecipeBuilder, RES : HTRecipeResult<*>, out RECIPE : Recipe<*>>( + prefix: String, + private val factory: HTBasicSingleRecipe.Factory +) : HTProgressRecipeBuilder(prefix) { + final override fun getRecipeId(): Identifier? = result.getId() + + final override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) + + // Ingredient + var ingredient: ING by HTDelegates.onceInitialize() + + operator fun ING.unaryPlus() { + ingredient = this + } + + // Result + var result: RES by HTDelegates.onceInitialize() + + operator fun RES.unaryPlus() { + result = this + } +} + +// Extensions // + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToFluidRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToItemRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToFluidRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToItemRecipeBuilder = HTSingleRecipeBuilder + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("itemIngredient") +fun HTSingleRecipeBuilder.ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("fluidIngredient") +fun HTSingleRecipeBuilder.ingredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("itemResult") +fun HTSingleRecipeBuilder<*, HTFluidResult, *>.result(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidResultBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("fluidResult") +fun HTSingleRecipeBuilder<*, HTItemResult, *>.result(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemResultBuilder.build(builderAction) +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt new file mode 100644 index 0000000000..8163d9da3d --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt @@ -0,0 +1,68 @@ +package hiiragi283.lib.recipe.base + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.recipe.ingredient.HTIngredient +import hiiragi283.lib.recipe.result.HTRecipeResult +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.crafting.RecipeInput + +/** + * 1種類の材料から1種類の完成品を作成するレシピを表す抽象クラスです。 + * @param INPUT レシピの入力となるクラス + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +open class HTBasicSingleRecipe, RES : HTRecipeResult<*>>( + val ingredient: ING, + val result: RES, + override val progressData: HTProgressData +) : HTProgressRecipe.Simple { + companion object { + @JvmStatic + fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> codec( + ingredient: Codec, + result: Codec, + factory: Factory + ): MapCodec = HTCodecs.recordMap { instance -> + instance.group( + ingredient.fieldOf(HTConstants.INGREDIENT).forGetter { it.ingredient }, + result.fieldOf(HTConstants.RESULT).forGetter { it.result }, + HTProgressData.CODEC.forGetter { it.progressData } + ).apply(instance, factory::create) + } + + @JvmStatic + fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> streamCodec( + ingredient: StreamCodec, + result: StreamCodec, + factory: Factory + ): StreamCodec = StreamCodec.composite( + ingredient, + { it.ingredient }, + result, + { it.result }, + HTProgressData.STREAM_CODEC, + { it.progressData }, + factory::create + ) + } + + // Factory // + + /** + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @param RECIPE 出力するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + fun interface Factory, RES : HTRecipeResult<*>, out RECIPE : Any> { + fun create(ingredient: ING, result: RES, progressData: HTProgressData): RECIPE + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt new file mode 100644 index 0000000000..37803ee601 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt @@ -0,0 +1,88 @@ +package hiiragi283.lib.recipe.base + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.createOrEmpty +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.compactNelFieldOf +import hiiragi283.lib.serialization.network.nelOf +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.neoforged.neoforge.fluids.FluidInstance +import net.neoforged.neoforge.fluids.FluidStack + +/** + * 1種類の液体から2種類の液体を作成するレシピを表すインターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface HTFluidToDoubleFluidRecipe : + HTRecipePredicates.SingleFluid, + HTRecipeFactories.SingleFluidTo>, + HTProgressRecipe { + + fun asSingleOutput(): HTFluidToFluidRecipe = object : HTFluidToFluidRecipe { + override fun test(input: FluidInstance): Boolean = this@HTFluidToDoubleFluidRecipe.test(input) + + override fun getMatchingStack(input: FluidInstance): FluidInstance = + this@HTFluidToDoubleFluidRecipe.getMatchingStack(input) + + override fun apply(input: FluidInstance): FluidStack = this@HTFluidToDoubleFluidRecipe.apply(input).first + + override fun getProgressData(input: HTSingleFluidRecipeInput): HTProgressData = + this@HTFluidToDoubleFluidRecipe.getProgressData(input) + } + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class Basic( + val ingredient: HTFluidIngredient, + val result: Nel, + override val progressData: HTProgressData + ) : HTFluidToDoubleFluidRecipe, + HTProgressRecipe.Simple { + companion object { + @JvmStatic + fun codec(factory: HTFluidToDoubleFluidRecipeBuilder.Factory): MapCodec = + HTCodecs.recordMap { instance -> + instance.group( + HTFluidIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(Basic::ingredient), + HTFluidResult.CODEC + .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) + .forGetter(Basic::result), + HTProgressData.CODEC.forGetter(Basic::progressData) + ).apply(instance, factory::create) + } + + @JvmField + val SIMPLE_CODEC: MapCodec = codec(::Basic) + + @JvmStatic + fun streamCodec( + factory: HTFluidToDoubleFluidRecipeBuilder.Factory + ): StreamCodec = StreamCodec.composite( + HTFluidIngredient.STREAM_CODEC, + Basic::ingredient, + HTFluidResult.STREAM_CODEC.nelOf(), + Basic::result, + HTProgressData.STREAM_CODEC, + Basic::progressData, + factory::create + ) + } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): Pair = + result.head.create() to result.getOrNull(1).createOrEmpty() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt index 15bf26d1c8..86e54f0ee2 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt @@ -1,15 +1,10 @@ package hiiragi283.lib.recipe.base -import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -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 import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.ItemStack @@ -40,73 +35,38 @@ interface HTFluidToRecipe : HTRecipeFactories.SingleFluidTo, HTProgressRecipe { - /** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - open class Basic>( - val ingredient: HTFluidIngredient, - val result: RESULT, - override val progressData: HTProgressData - ) : HTFluidToRecipe, - HTProgressRecipe.Simple { - companion object { - @JvmStatic - fun , RECIPE : Basic> codec( - resultCodec: Codec, - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTFluidIngredient.CODEC - .fieldOf(HTConstants.INGREDIENT) - .forGetter(Basic::ingredient), - resultCodec.fieldOf(HTConstants.RESULT).forGetter(Basic::result), - HTProgressData.CODEC.forGetter(Basic::progressData) - ).apply(instance, factory::create) - } - - @JvmStatic - fun , RECIPE : Basic> streamCodec( - resultCodec: StreamCodec, - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = StreamCodec.composite( - HTFluidIngredient.STREAM_CODEC, - Basic::ingredient, - resultCodec, - Basic::result, - HTProgressData.STREAM_CODEC, - Basic::progressData, - factory::create - ) - } - - override fun test(input: FluidInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) - - override fun apply(input: FluidInstance): OUTPUT = result.create() - } - /** * @author Hiiragi Tsubasa * @since 26.1.5 */ open class BasicItem(ingredient: HTFluidIngredient, result: HTItemResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTFluidToRecipe { companion object { @JvmStatic fun codec( - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = codec(HTItemResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTFluidIngredient.CODEC, HTItemResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTItemResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTFluidIngredient.STREAM_CODEC, HTItemResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicItem) } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): ItemStack = result.create() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) } /** @@ -114,20 +74,32 @@ interface HTFluidToRecipe : * @since 26.1.5 */ open class BasicFluid(ingredient: HTFluidIngredient, result: HTFluidResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTFluidToRecipe { companion object { @JvmStatic fun codec( - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = codec(HTFluidResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTFluidIngredient.CODEC, HTFluidResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTFluidResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTFluidIngredient.STREAM_CODEC, HTFluidResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicFluid) } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): FluidStack = result.create() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt index e46db7e7da..5fb24a418a 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt @@ -44,7 +44,7 @@ interface HTItemToDoubleItemRecipe : */ open class Basic( val ingredient: HTItemIngredient, - val result: Nel, + val results: Nel, override val progressData: HTProgressData ) : HTItemToDoubleItemRecipe, HTProgressRecipe.Simple { @@ -56,7 +56,7 @@ interface HTItemToDoubleItemRecipe : HTItemIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(Basic::ingredient), HTItemResult.CODEC .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) - .forGetter(Basic::result), + .forGetter(Basic::results), HTProgressData.CODEC.forGetter(Basic::progressData) ).apply(instance, factory::create) } @@ -71,7 +71,7 @@ interface HTItemToDoubleItemRecipe : HTItemIngredient.STREAM_CODEC, Basic::ingredient, HTItemResult.STREAM_CODEC.nelOf(), - Basic::result, + Basic::results, HTProgressData.STREAM_CODEC, Basic::progressData, factory::create @@ -83,6 +83,6 @@ interface HTItemToDoubleItemRecipe : override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) override fun apply(input: ItemInstance): Pair = - result.head.create() to result.getOrNull(1).createOrEmpty() + results.head.create() to results.getOrNull(1).createOrEmpty() } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt index 29763d990c..807caf0d54 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt @@ -1,14 +1,9 @@ package hiiragi283.lib.recipe.base -import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -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 -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.ItemInstance @@ -40,73 +35,33 @@ interface HTItemToRecipe : HTRecipeFactories.SingleItemTo, HTProgressRecipe { - /** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - open class Basic>( - val ingredient: HTItemIngredient, - val result: RESULT, - override val progressData: HTProgressData - ) : HTItemToRecipe, - HTProgressRecipe.Simple { - companion object { - @JvmStatic - fun , RECIPE : Basic> codec( - resultCodec: Codec, - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTItemIngredient.CODEC - .fieldOf(HTConstants.INGREDIENT) - .forGetter(Basic::ingredient), - resultCodec.fieldOf(HTConstants.RESULT).forGetter(Basic::result), - HTProgressData.CODEC.forGetter(Basic::progressData) - ).apply(instance, factory::create) - } - - @JvmStatic - fun , RECIPE : Basic> streamCodec( - resultCodec: StreamCodec, - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = StreamCodec.composite( - HTItemIngredient.STREAM_CODEC, - Basic::ingredient, - resultCodec, - Basic::result, - HTProgressData.STREAM_CODEC, - Basic::progressData, - factory::create - ) - } - - override fun test(input: ItemInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) - - override fun apply(input: ItemInstance): OUTPUT = result.create() - } - /** * @author Hiiragi Tsubasa * @since 26.1.5 */ open class BasicItem(ingredient: HTItemIngredient, result: HTItemResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe(ingredient, result, progressData), + HTItemToRecipe { companion object { @JvmStatic - fun codec( - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = codec(HTItemResult.CODEC, factory) + fun codec(factory: Factory): MapCodec = + codec(HTItemIngredient.CODEC, HTItemResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTItemResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTItemIngredient.STREAM_CODEC, HTItemResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicItem) } + + override fun test(input: ItemInstance): Boolean = ingredient.test(input) + + override fun apply(input: ItemInstance): ItemStack = result.create() + + override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) } /** @@ -114,20 +69,32 @@ interface HTItemToRecipe : * @since 26.1.5 */ open class BasicFluid(ingredient: HTItemIngredient, result: HTFluidResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTItemToRecipe { companion object { @JvmStatic fun codec( - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = codec(HTFluidResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTItemIngredient.CODEC, HTFluidResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTFluidResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTItemIngredient.STREAM_CODEC, HTFluidResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicFluid) } + + override fun test(input: ItemInstance): Boolean = ingredient.test(input) + + override fun apply(input: ItemInstance): FluidStack = result.create() + + override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt b/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt index a9d29fa583..e5d723d18b 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt @@ -40,13 +40,8 @@ interface HTOutputSlot { FULL; /** - * 出力の受け取りに失敗した場合は`true` + * 出力をすべて受け取れた場合は`true` */ - val noneTaken: Boolean get() = this == NONE - - /** - * 出力の受け取りに成功した場合は`true` - */ - val anyTaken: Boolean get() = !noneTaken + val fullOrNoneTaken: Boolean get() = this == NONE || this == FULL } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt index 1a313b2543..ea36ad3ecf 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt @@ -19,6 +19,7 @@ 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.common.Tags import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.crafting.FluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredientType @@ -48,8 +49,10 @@ data class HTPotionFluidIngredient(val potions: HolderSet) : FluidIngred constructor(potion: Holder) : this(HolderSet.direct(potion)) - override fun test(fluidStack: FluidStack): Boolean = - HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) + override fun test(fluidStack: FluidStack): Boolean = when { + fluidStack.`is`(Tags.Fluids.WATER) -> Potions.WATER in potions + else -> HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) + } @Suppress("DEPRECATION") override fun generateFluids(): Stream> = diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt new file mode 100644 index 0000000000..e90060bc3a --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt @@ -0,0 +1,22 @@ +package hiiragi283.lib.transfer + +import net.neoforged.neoforge.transfer.ResourceHandler +import net.neoforged.neoforge.transfer.resource.Resource +import net.neoforged.neoforge.transfer.transaction.TransactionContext + +/** + * Ragiumで使用される[ResourceHandler]の拡張インターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface ExtendedResourceHandler : ResourceHandler { + fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext, access: HTTransferAccess): Int + + override fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = + insert(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) + + fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext, access: HTTransferAccess): Int + + override fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = + extract(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) +} diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt index 2a68161b2a..7c07b7a0b6 100644 --- a/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt +++ b/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt @@ -1,10 +1,9 @@ package hiiragi283.lib.transfer -import net.neoforged.neoforge.transfer.ResourceHandler import net.neoforged.neoforge.transfer.resource.Resource import net.neoforged.neoforge.transfer.transaction.TransactionContext -class HTResourceHandler(val slots: List>) : ResourceHandler { +class HTResourceHandler(val slots: List>) : ExtendedResourceHandler { fun getSlot(index: Int): HTResourceSlot = slots[index] override fun size(): Int = slots.size @@ -23,9 +22,19 @@ class HTResourceHandler(val slots: List>) : Reso override fun isValid(index: Int, resource: T): Boolean = getSlot(index).isValid(resource) - override fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = - getSlot(index).insert(resource, amount, transaction, HTTransferAccess.EXTERNAL) - - override fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = - getSlot(index).extract(resource, amount, transaction, HTTransferAccess.EXTERNAL) + override fun insert( + index: Int, + resource: T, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = getSlot(index).insert(resource, amount, transaction, access) + + override fun extract( + index: Int, + resource: T, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = getSlot(index).extract(resource, amount, transaction, access) } diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt index 0e49b5936a..3b7276d938 100644 --- a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt +++ b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt @@ -36,9 +36,13 @@ open class HTBasicFluidTank( listener: Runnable?, canInsert: Predicate = HTTransferPredicates.alwaysTrue(), filter: Predicate = canInsert - ): HTBasicFluidTank = create(capacity, listener, HTTransferPredicates.notExternal(), { resource, _ -> - canInsert.test(resource) - }, filter) + ): HTBasicFluidTank = create( + capacity, + listener, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) @JvmStatic fun output(capacity: Int, listener: Runnable?): HTBasicFluidTank = diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt new file mode 100644 index 0000000000..35e7e5d156 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt @@ -0,0 +1,86 @@ +package hiiragi283.lib.transfer.fluid + +import hiiragi283.lib.transfer.ExtendedResourceHandler +import hiiragi283.lib.transfer.HTTransferAccess +import hiiragi283.lib.transfer.HTTransferPredicates +import hiiragi283.ragium.api.data.RagiumDataComponents +import net.neoforged.neoforge.transfer.access.ItemAccess +import net.neoforged.neoforge.transfer.fluid.FluidResource +import net.neoforged.neoforge.transfer.fluid.ItemAccessFluidHandler +import net.neoforged.neoforge.transfer.transaction.TransactionContext +import java.util.function.BiPredicate +import java.util.function.Predicate + +/** + * Ragiumで使用される[ItemAccessFluidHandler]の拡張クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +class HTItemAccessFluidHandler( + itemAccess: ItemAccess, + capacity: Int, + private val canExtract: BiPredicate, + private val canInsert: BiPredicate, + private val filter: Predicate +) : ItemAccessFluidHandler(itemAccess, RagiumDataComponents.FLUID, capacity), + ExtendedResourceHandler { + companion object { + @JvmStatic + fun create( + itemAccess: ItemAccess, + capacity: Int, + canExtract: BiPredicate = HTTransferPredicates.alwaysTrueBi(), + canInsert: BiPredicate = HTTransferPredicates.alwaysTrueBi(), + filter: Predicate = HTTransferPredicates.alwaysTrue() + ): HTItemAccessFluidHandler = HTItemAccessFluidHandler(itemAccess, capacity, canExtract, canInsert, filter) + + @JvmStatic + fun input( + itemAccess: ItemAccess, + capacity: Int, + canInsert: Predicate = HTTransferPredicates.alwaysTrue(), + filter: Predicate = canInsert + ): HTItemAccessFluidHandler = create( + itemAccess, + capacity, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) + + @JvmStatic + fun output(itemAccess: ItemAccess, capacity: Int): HTItemAccessFluidHandler = + create(itemAccess, capacity, canInsert = HTTransferPredicates.internalOnly()) + } + + override fun insert( + index: Int, + resource: FluidResource, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = when { + canInsert.test(resource, access) -> super.insert(index, resource, amount, transaction) + else -> 0 + } + + override fun extract( + index: Int, + resource: FluidResource, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = when { + canExtract.test(resource, access) -> super.extract(index, resource, amount, transaction) + else -> 0 + } + + override fun isValid(index: Int, resource: FluidResource): Boolean = + super.isValid(index, resource) && filter.test(resource) + + override fun insert(index: Int, resource: FluidResource, amount: Int, transaction: TransactionContext): Int = + this.insert(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) + + override fun extract(index: Int, resource: FluidResource, amount: Int, transaction: TransactionContext): Int = + this.extract(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) +} diff --git a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt index cdf75dd9e5..e545fbdb05 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt @@ -63,4 +63,29 @@ data object HTDelegates { setter.accept(value) } } + + /** + * @since 26.1.8 + */ + fun memoizeNotNull(supplier: () -> T?): ReadWriteProperty = MemoizeNotNull(supplier) + + private class MemoizeNotNull(private val supplier: () -> T?) : ReadWriteProperty { + private var cachedValue: T? = null + + override fun getValue(thisRef: Any?, property: KProperty<*>): T? { + if (cachedValue != null) { + return cachedValue + } else { + val value: T? = supplier() + if (value != null) { + cachedValue = value + } + return value + } + } + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { + cachedValue = value + } + } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index cdf93d6091..59c1286685 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -137,10 +137,6 @@ data object RagiumConfig { val chemicalReactor: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_REACTOR) - @JvmField - val electrolyzer: HTEnergyConfig = - HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) - @JvmField val mixer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) @@ -155,6 +151,10 @@ data object RagiumConfig { HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) // Electronics + @JvmField + val electrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER, 64) + @JvmField val precisionAssembler: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PRECISION_ASSEMBLER, 64) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 2016b67c66..f094c63515 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -23,16 +23,18 @@ data object RagiumConstants { const val SMELTER = "smelter" // Chemical + const val CENTRIFUGE = "centrifuge" const val CHEMICAL_BATH = "chemical_bath" const val CHEMICAL_REACTOR = "chemical_reactor" - const val ELECTROLYZER = "electrolyzer" const val MIXER = "mixer" + const val WASHER = "washer" // Bio const val BREWERY = "brewery" const val PLANTER = "planter" // Electronics + const val ELECTROLYZER = "electrolyzer" const val PRECISION_ASSEMBLER = "precision_assembler" const val SCANNER = "scanner" @@ -60,15 +62,17 @@ data object RagiumConstants { // Chemical const val BATHING = "bathing" - const val ELECTROLYZING = "electrolyzing" + const val CENTRIFUGING = "centrifuging" const val MIXING = "mixing" const val REACTING = "reacting" + const val WASHING = "washing" // Bio const val BREWING = "brewing" const val PLANTING = "planting" // Electronics + const val ELECTROLYZING = "electrolyzing" const val PRINTING = "printing" const val RESOURCE_EXTRACTING = "resource/extracting" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt index 1957aa97be..ff557a8232 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt @@ -1,11 +1,13 @@ package hiiragi283.ragium.api +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.sync.HTSyncablePayload import hiiragi283.lib.gui.widget.HTWidgetType import hiiragi283.lib.recipe.result.HTFluidResultType import hiiragi283.lib.recipe.result.HTItemResultType import hiiragi283.lib.resource.toId -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.element.HTElement import net.minecraft.core.Registry import net.minecraft.resources.ResourceKey import net.neoforged.bus.api.SubscribeEvent @@ -21,6 +23,12 @@ import net.neoforged.neoforge.registries.RegistryBuilder */ @EventBusSubscriber data object RagiumRegistries { + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL_TYPE: Registry> = createRegistry(Keys.CHEMICAL_TYPE) + @JvmField val FLUID_RESULT_TYPE: Registry> = createRegistry(Keys.FLUID_RESULT_TYPE) @@ -35,6 +43,7 @@ data object RagiumRegistries { @SubscribeEvent fun registerNewRegistry(event: NewRegistryEvent) { + event.register(CHEMICAL_TYPE) event.register(FLUID_RESULT_TYPE) event.register(ITEM_RESULT_TYPE) event.register(SYNCABLE_SLOT_TYPE) @@ -44,9 +53,14 @@ data object RagiumRegistries { @SubscribeEvent fun registerDynamicRegistries(event: DataPackRegistryEvent.NewRegistry) { event.dataPackRegistry( - Keys.ORE_SLURRY_DATA, - HTOreSlurryData.DIRECT_CODEC, - HTOreSlurryData.DIRECT_CODEC + Keys.CHEMICAL, + HTChemical.DISPATCH_CODEC, + HTChemical.DISPATCH_CODEC + ) + event.dataPackRegistry( + Keys.ELEMENT, + HTElement.DIRECT_CODEC, + HTElement.DIRECT_CODEC ) } @@ -61,6 +75,12 @@ data object RagiumRegistries { */ data object Keys { // Static + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL_TYPE: ResourceKey>> = createKey("chemical_type") + @JvmField val FLUID_RESULT_TYPE: ResourceKey>> = createKey("fluid_result_type") @@ -76,10 +96,16 @@ data object RagiumRegistries { // Dynamic /** - * @since 26.1.5 + * @since 26.1.8 + */ + @JvmField + val CHEMICAL: ResourceKey> = createKey(HTConstants.CHEMICAL) + + /** + * @since 26.1.8 */ @JvmField - val ORE_SLURRY_DATA: ResourceKey> = createKey("ore_slurry_data") + val ELEMENT: ResourceKey> = createKey(HTConstants.ELEMENT) @JvmStatic private fun createKey(path: String): ResourceKey> = diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index ac165d95e4..02c84c37c5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.api.data import hiiragi283.lib.data.DataComponentType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData +import hiiragi283.ragium.api.data.chemical.HTChemical import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentType import net.minecraft.network.codec.ByteBufCodecs @@ -17,7 +17,13 @@ import java.util.UUID * @since 26.1.0 */ data object RagiumDataComponents { - // Item Stack + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL: DataComponentType> = + DataComponentType(HTChemical.HOLDER_CODEC, HTChemical.HOLDER_STREAM_CODEC) + @JvmField val ENERGY: DataComponentType = DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) @@ -31,13 +37,6 @@ data object RagiumDataComponents { ItemStackTemplate.STREAM_CODEC ) - /** - * @since 26.1.5 - */ - @JvmField - val ORE_SLURRY_DATA: DataComponentType> = - DataComponentType(HTOreSlurryData.CODEC, HTOreSlurryData.STREAM_CODEC) - /** * @since 26.1.7 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt new file mode 100644 index 0000000000..2ee2134bd6 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt @@ -0,0 +1,69 @@ +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.text.HTHasText +import hiiragi283.lib.text.MutableText +import hiiragi283.lib.text.toText +import hiiragi283.ragium.api.RagiumRegistries +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec + +/** + * 化学物質を表すクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface HTChemical : HTHasText { + companion object { + @JvmField + val DISPATCH_CODEC: Codec = + RagiumRegistries.CHEMICAL_TYPE.byNameCodec().dispatch(HTChemical::type, Type<*>::codec) + + @JvmField + val HOLDER_CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.CHEMICAL, DISPATCH_CODEC) + + @JvmField + val DISPATCH_STREAM_CODEC: StreamCodec = + ByteBufCodecs.registry(RagiumRegistries.Keys.CHEMICAL_TYPE).dispatch(HTChemical::type, Type<*>::streamCodec) + + @JvmField + val HOLDER_STREAM_CODEC: StreamCodec> = + HTStreamCodecs.holder(RagiumRegistries.Keys.CHEMICAL, DISPATCH_STREAM_CODEC) + + @JvmField + val WEIGHT_CODEC: MapCodec = Codec.intRange(1, 99).optionalFieldOf("weight", 1) + + @JvmStatic + fun format(weight: Int): String = when { + //値が1の場合はパス + weight <= 1 -> "" + + else -> buildString { + //化学式の下付き数字の桁数調整 + val subscript1: Char = '\u2080' + (weight % 10) + val subscript10: Char = '\u2080' + (weight / 10) + //2桁目が0でない場合,下付き数字を2桁にする + this.append( + buildString { + if (subscript10 != '\u2080') this.append(subscript10) + this.append(subscript1) + } + ) + } + } + } + + fun type(): Type + + fun getChemicalFormula(): String + + override fun getText(): MutableText = this.getChemicalFormula().toText() + + @JvmRecord + data class Type(val codec: MapCodec, val streamCodec: StreamCodec) +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt new file mode 100644 index 0000000000..96cb9e2b29 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt @@ -0,0 +1,115 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.nelOrElement +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.serialization.network.nelOf +import hiiragi283.lib.util.Either +import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.element.HTElement +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.core.Holder +import net.minecraft.core.HolderGetter +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec +import net.minecraft.resources.ResourceKey +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 化合物を表す[HTChemical]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTCompoundChemical(val composition: Nel, Holder>, Int>>) : + HTChemical { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.mapPair( + HTCodecs.mapEither( + HTChemical.HOLDER_CODEC.fieldOf(HTConstants.CHEMICAL), + HTElement.HOLDER_CODEC.fieldOf(HTConstants.ELEMENT) + ), + HTChemical.WEIGHT_CODEC + ).codec().nelOrElement().fieldOf("composition").xmap(::HTCompoundChemical, HTCompoundChemical::composition) + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTStreamCodecs.pair( + HTStreamCodecs.either(HTChemical.HOLDER_STREAM_CODEC, HTElement.HOLDER_STREAM_CODEC), + ByteBufCodecs.VAR_INT + ).nelOf(), + HTCompoundChemical::composition, + ::HTCompoundChemical + ) + + @JvmField + val TYPE: HTChemical.Type = HTChemical.Type(CODEC, STREAM_CODEC) + + @JvmStatic + inline fun build(context: BootstrapContext<*>, builderAction: Builder.() -> Unit): HTCompoundChemical { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return Builder(context).apply(builderAction).build() + } + } + + override fun type(): HTChemical.Type = TYPE + + override fun getChemicalFormula(): String = composition.joinToString( + separator = "", + transform = { (either: Either, Holder>, weight: Int) -> + buildString { + append( + either.fold( + { chemical: Holder -> + val formula: String = chemical.value().getChemicalFormula() + when { + weight > 1 -> "($formula)" + else -> formula + } + }, + { element: Holder -> element.value().symbol } + ) + ) + append(HTChemical.format(weight)) + } + } + ) + + class Builder( + private val chemicalGetter: HolderGetter, + private val elementGetter: HolderGetter + ) { + constructor(context: BootstrapContext<*>) : this( + context.lookup(RagiumRegistries.Keys.CHEMICAL), + context.lookup(RagiumRegistries.Keys.ELEMENT) + ) + + private val composition: MutableList, Holder>, Int>> = + ObjectArrayList() + + @JvmName("addChemical") + fun add(chemical: ResourceKey, weight: Int): Builder = apply { + composition += Either.Left(chemicalGetter.getOrThrow(chemical)) to weight + } + + @JvmName("addElement") + fun add(element: ResourceKey, weight: Int): Builder = apply { + composition += Either.Right(elementGetter.getOrThrow(element)) to weight + } + + fun build(): HTCompoundChemical = HTCompoundChemical(composition.toNel()) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt new file mode 100644 index 0000000000..b74e43f21a --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt @@ -0,0 +1,44 @@ +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.ragium.api.data.element.HTElement +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec + +/** + * 単体を表す[HTChemical]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTSimpleChemical(val element: Holder, val weight: Int) : HTChemical { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTElement.HOLDER_CODEC.fieldOf(HTConstants.ELEMENT).forGetter(HTSimpleChemical::element), + HTChemical.WEIGHT_CODEC.forGetter(HTSimpleChemical::weight) + ).apply(instance, ::HTSimpleChemical) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTElement.HOLDER_STREAM_CODEC, + HTSimpleChemical::element, + ByteBufCodecs.VAR_INT, + HTSimpleChemical::weight, + ::HTSimpleChemical + ) + + @JvmField + val TYPE: HTChemical.Type = HTChemical.Type(CODEC, STREAM_CODEC) + } + + override fun type(): HTChemical.Type = TYPE + + override fun getChemicalFormula(): String = "${element.value().symbol}${HTChemical.format(weight)}" +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt new file mode 100644 index 0000000000..21e300de12 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -0,0 +1,270 @@ +package hiiragi283.ragium.api.data.chemical + +import hiiragi283.lib.registry.createKey +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.element.HTElement +import hiiragi283.ragium.api.data.element.RagiumElements +import net.minecraft.core.HolderGetter +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.resources.ResourceKey + +/** + * Ragiumで追加される[化学物質][HTChemical]をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object RagiumChemicals { + // Simple Substances // + + // 1st Period + @JvmField + val HYDROGEN: ResourceKey = create("hydrogen") + + // 2nd Period + @JvmField + val CARBON: ResourceKey = create("carbon") + + @JvmField + val DIAMOND: ResourceKey = create("diamond") + + @JvmField + val NITROGEN: ResourceKey = create("nitrogen") + + @JvmField + val OXYGEN: ResourceKey = create("oxygen") + + // 3rd Period + @JvmField + val ALUMINUM: ResourceKey = create("aluminum") + + @JvmField + val SILICON: ResourceKey = create("silicon") + + @JvmField + val SULFUR: ResourceKey = create("sulfur") + + @JvmField + val CHLORINE: ResourceKey = create("chlorine") + + // 4th Period + @JvmField + val IRON: ResourceKey = create("iron") + + @JvmField + val COPPER: ResourceKey = create("copper") + + // 6th Period + @JvmField + val GOLD: ResourceKey = create("gold") + + // Compounds // + + // 1st Period + @JvmField + val HYDROXIDE: ResourceKey = create("hydroxide") + + @JvmField + val WATER: ResourceKey = create("water") + + // 2nd Period + @JvmField + val NITRATE: ResourceKey = create("nitrate") + + @JvmField + val NITRIC_ACID: ResourceKey = create("nitric_acid") + + @JvmField + val HYDROGEN_FLUORIDE: ResourceKey = create("hydrogen_fluoride") + + @JvmField + val FLUORITE: ResourceKey = create("fluorite") + + @JvmField + val CRYOLITE: ResourceKey = create("cryolite") + + // 3rd Period + @JvmField + val SODIUM_HYDROXIDE: ResourceKey = create("sodium_hydroxide") + + @JvmField + val SODIUM_CHLORIDE: ResourceKey = create("sodium_chloride") + + @JvmField + val ALUMINUM_OXIDE: ResourceKey = create("aluminum_oxide") + + @JvmField + val SILICON_DIOXIDE: ResourceKey = create("silicon_dioxide") + + @JvmField + val SULFUR_DIOXIDE: ResourceKey = create("sulfur_dioxide") + + @JvmField + val SULFUR_TRIOXIDE: ResourceKey = create("sulfur_trioxide") + + @JvmField + val SULFATE: ResourceKey = create("sulfate") + + @JvmField + val SULFURIC_ACID: ResourceKey = create("sulfuric_acid") + + @JvmField + val HYDROGEN_CHLORIDE: ResourceKey = create("hydrogen_chloride") + + // 4th Period + @JvmField + val POTASSIUM_NITRATE: ResourceKey = create("potassium_nitrate") + + // Mixtures // + + @JvmStatic + private fun create(name: String): ResourceKey = + RagiumRegistries.Keys.CHEMICAL.createKey(RagiumAPI.id(name)) + + @JvmStatic + fun bootstrap(context: BootstrapContext) { + val getter: HolderGetter = context.lookup(RagiumRegistries.Keys.ELEMENT) + // Simple Substances + context.register(HYDROGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.HYDROGEN), 2)) + + context.register(CARBON, HTSimpleChemical(getter.getOrThrow(RagiumElements.CARBON), 1)) + context.register(DIAMOND, HTSimpleChemical(getter.getOrThrow(RagiumElements.CARBON), 1)) + context.register(NITROGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.NITROGEN), 2)) + context.register(OXYGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.OXYGEN), 2)) + + context.register(ALUMINUM, HTSimpleChemical(getter.getOrThrow(RagiumElements.ALUMINUM), 1)) + context.register(SILICON, HTSimpleChemical(getter.getOrThrow(RagiumElements.SILICON), 1)) + context.register(SULFUR, HTSimpleChemical(getter.getOrThrow(RagiumElements.SULFUR), 1)) + context.register(CHLORINE, HTSimpleChemical(getter.getOrThrow(RagiumElements.CHLORINE), 2)) + + context.register(IRON, HTSimpleChemical(getter.getOrThrow(RagiumElements.IRON), 1)) + context.register(COPPER, HTSimpleChemical(getter.getOrThrow(RagiumElements.COPPER), 1)) + + context.register(GOLD, HTSimpleChemical(getter.getOrThrow(RagiumElements.GOLD), 1)) + + // Compounds + context.register( + HYDROXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.OXYGEN, 1) + add(RagiumElements.HYDROGEN, 1) + } + ) + context.register( + WATER, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 2) + add(RagiumElements.OXYGEN, 1) + } + ) + + context.register( + NITRATE, + HTCompoundChemical.build(context) { + add(RagiumElements.NITROGEN, 1) + add(RagiumElements.OXYGEN, 3) + } + ) + context.register( + NITRIC_ACID, + HTCompoundChemical.build(context) { + add(RagiumElements.NITROGEN, 1) + add(NITRATE, 1) + } + ) + context.register( + HYDROGEN_FLUORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 1) + add(RagiumElements.FLUORINE, 1) + } + ) + context.register( + FLUORITE, + HTCompoundChemical.build(context) { + add(RagiumElements.CALCIUM, 1) + add(RagiumElements.FLUORINE, 2) + } + ) + context.register( + CRYOLITE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 3) + add(RagiumElements.ALUMINUM, 1) + add(RagiumElements.FLUORINE, 6) + } + ) + + context.register( + SODIUM_HYDROXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 1) + add(HYDROXIDE, 1) + } + ) + context.register( + SODIUM_CHLORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 1) + add(RagiumElements.CHLORINE, 1) + } + ) + context.register( + ALUMINUM_OXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.ALUMINUM, 2) + add(RagiumElements.OXYGEN, 3) + } + ) + context.register( + SILICON_DIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SILICON, 1) + add(RagiumElements.OXYGEN, 2) + } + ) + context.register( + SULFUR_DIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 2) + } + ) + context.register( + SULFUR_TRIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 3) + } + ) + context.register( + SULFATE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 4) + } + ) + context.register( + SULFURIC_ACID, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 2) + add(SULFATE, 1) + } + ) + context.register( + HYDROGEN_CHLORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 1) + add(RagiumElements.CHLORINE, 1) + } + ) + + context.register( + POTASSIUM_NITRATE, + HTCompoundChemical.build(context) { + add(RagiumElements.POTASSIUM, 1) + add(NITRATE, 1) + } + ) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt new file mode 100644 index 0000000000..6b47b963e0 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.api.data.element + +import com.mojang.serialization.Codec +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.ragium.api.RagiumRegistries +import io.netty.buffer.ByteBuf +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec +import net.minecraft.util.ExtraCodecs + +/** + * 元素を表すクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTElement(val symbol: String) { + companion object { + @JvmField + val DIRECT_CODEC: Codec = HTCodecs.record { instance -> + instance.group( + ExtraCodecs.NON_EMPTY_STRING.fieldOf("symbol").forGetter(HTElement::symbol) + ).apply(instance, ::HTElement) + } + + @JvmField + val HOLDER_CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.ELEMENT, DIRECT_CODEC) + + @JvmField + val DIRECT_STREAM_CODEC: StreamCodec = StreamCodec.composite( + ByteBufCodecs.STRING_UTF8, + HTElement::symbol, + ::HTElement + ) + + @JvmField + val HOLDER_STREAM_CODEC: StreamCodec> = + HTStreamCodecs.holder(RagiumRegistries.Keys.ELEMENT, DIRECT_STREAM_CODEC) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt new file mode 100644 index 0000000000..2e07a21150 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt @@ -0,0 +1,95 @@ +package hiiragi283.ragium.api.data.element + +import hiiragi283.lib.registry.createKey +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumRegistries +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.resources.ResourceKey + +/** + * Ragiumで追加される[元素][HTElement]をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object RagiumElements { + // 1st Period + @JvmField + val HYDROGEN: ResourceKey = create("hydrogen") + + // 2nd Period + @JvmField + val CARBON: ResourceKey = create("carbon") + + @JvmField + val NITROGEN: ResourceKey = create("nitrogen") + + @JvmField + val OXYGEN: ResourceKey = create("oxygen") + + @JvmField + val FLUORINE: ResourceKey = create("fluorine") + + // 3rd Period + @JvmField + val SODIUM: ResourceKey = create("sodium") + + @JvmField + val ALUMINUM: ResourceKey = create("aluminum") + + @JvmField + val SILICON: ResourceKey = create("silicon") + + @JvmField + val SULFUR: ResourceKey = create("sulfur") + + @JvmField + val CHLORINE: ResourceKey = create("chlorine") + + // 4th Period + @JvmField + val POTASSIUM: ResourceKey = create("potassium") + + @JvmField + val CALCIUM: ResourceKey = create("calcium") + + @JvmField + val IRON: ResourceKey = create("iron") + + @JvmField + val COPPER: ResourceKey = create("copper") + + // 6th Period + @JvmField + val GOLD: ResourceKey = create("gold") + + @JvmStatic + private fun create(name: String): ResourceKey = + RagiumRegistries.Keys.ELEMENT.createKey(RagiumAPI.id(name)) + + @JvmStatic + fun bootstrap(context: BootstrapContext) { + fun register(key: ResourceKey, symbol: String) { + context.register(key, HTElement(symbol)) + } + + register(HYDROGEN, "H") + + register(CARBON, "C") + register(NITROGEN, "N") + register(OXYGEN, "O") + register(FLUORINE, "F") + + register(SODIUM, "Na") + register(ALUMINUM, "Al") + register(SILICON, "Si") + register(SULFUR, "S") + register(CHLORINE, "Cl") + + register(POTASSIUM, "K") + register(CALCIUM, "Ca") + register(IRON, "Fe") + register(COPPER, "Cu") + + register(GOLD, "Au") + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt deleted file mode 100644 index 844915d74f..0000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt +++ /dev/null @@ -1,50 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import com.mojang.serialization.Codec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import hiiragi283.lib.text.Text -import hiiragi283.ragium.api.RagiumRegistries -import net.minecraft.core.Holder -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.ByteBufCodecs -import net.minecraft.network.codec.StreamCodec -import net.minecraft.util.ExtraCodecs - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -@JvmRecord -data class HTOreSlurryData(val title: Text, val color: Int, val result: HTItemResult) { - companion object { - @JvmField - val DIRECT_CODEC: Codec = HTCodecs.record { instance -> - instance.group( - HTCodecs.TEXT.fieldOf("title").forGetter(HTOreSlurryData::title), - ExtraCodecs.STRING_RGB_COLOR.fieldOf("color").forGetter(HTOreSlurryData::color), - HTItemResult.CODEC.fieldOf(HTConstants.RESULT).forGetter(HTOreSlurryData::result) - ).apply(instance, ::HTOreSlurryData) - } - - @JvmField - val CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.ORE_SLURRY_DATA, DIRECT_CODEC) - - @JvmField - val DIRECT_STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.TEXT, - HTOreSlurryData::title, - ByteBufCodecs.VAR_INT, - HTOreSlurryData::color, - HTItemResult.STREAM_CODEC, - HTOreSlurryData::result, - ::HTOreSlurryData - ) - - @JvmField - val STREAM_CODEC: StreamCodec> = - HTStreamCodecs.holder(RagiumRegistries.Keys.ORE_SLURRY_DATA, DIRECT_STREAM_CODEC) - } -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt deleted file mode 100644 index 3d31d0f9fd..0000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt +++ /dev/null @@ -1,49 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.text.Text -import hiiragi283.ragium.api.data.RagiumDataComponents -import net.minecraft.core.Holder -import net.minecraft.core.component.DataComponentGetter -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.world.item.ItemStack -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -data object HTOreSlurryDataHelper { - @JvmStatic - fun getHolder(getter: DataComponentGetter): Holder? = - getter.get(RagiumDataComponents.ORE_SLURRY_DATA) - - @JvmStatic - fun getData(getter: DataComponentGetter): HTOreSlurryData? = getHolder(getter)?.value() - - @JvmStatic - fun getTitle(getter: DataComponentGetter): Text? = getData(getter)?.title - - @JvmStatic - fun createPatch(holder: Holder): DataComponentPatch = - buildDataPatch { set(RagiumDataComponents.ORE_SLURRY_DATA, holder) } - - @JvmStatic - fun copyToPatch(getter: DataComponentGetter): DataComponentPatch? = getHolder(getter)?.let(::createPatch) - - @JvmStatic - fun createFluid(holder: Holder, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = - HTOreSlurryFluidAccess.INSTANCE.fluidContent.toStack(amount, createPatch(holder)) - - @JvmStatic - fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack? = - getHolder(getter)?.let { createFluid(it, amount) } - - @JvmStatic - fun createBucket(holder: Holder): ItemStack = - HTOreSlurryFluidAccess.INSTANCE.fluidContent.bucketHolder.toStack(patch = createPatch(holder)) - - @JvmStatic - fun createBucket(getter: DataComponentGetter): ItemStack? = getHolder(getter)?.let(::createBucket) -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt deleted file mode 100644 index 85ec3ac7ce..0000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt +++ /dev/null @@ -1,20 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.ragium.api.RagiumAPI - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -interface HTOreSlurryFluidAccess { - companion object { - @JvmField - val INSTANCE: HTOreSlurryFluidAccess = RagiumAPI.getService() - } - - /** - * Ragiumで登録される鉱石泥のインスタンス - */ - val fluidContent: HTFluidContent -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt deleted file mode 100644 index 90c231191f..0000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt +++ /dev/null @@ -1,78 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.registry.HTSimpleDeferredItem -import hiiragi283.lib.registry.createKey -import hiiragi283.lib.resource.toLanguageKey -import hiiragi283.lib.text.translatableText -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.material.HTItemPart -import hiiragi283.ragium.api.material.RagiumMaterial -import net.minecraft.core.HolderGetter -import net.minecraft.core.registries.Registries -import net.minecraft.data.worldgen.BootstrapContext -import net.minecraft.resources.ResourceKey -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.Items - -data object RagiumOreSlurryData { - @JvmField - val COPPER: ResourceKey = create("copper") - - @JvmField - val IRON: ResourceKey = create("iron") - - @JvmField - val GOLD: ResourceKey = create("gold") - - /** - * @since 26.1.7 - */ - @JvmField - val NETHERITE_SCRAP: ResourceKey = create("netherite_scrap") - - @JvmStatic - private fun create(name: String): ResourceKey = - RagiumRegistries.Keys.ORE_SLURRY_DATA.createKey(RagiumAPI.id(name)) - - @JvmStatic - fun bootstrap(context: BootstrapContext) { - val getter: HolderGetter = context.lookup(Registries.ITEM) - - fun register(key: ResourceKey, color: Int, result: HTItemResult) { - context.register( - key, - HTOreSlurryData(translatableText(key.toLanguageKey()), color, result) - ) - } - - fun register( - key: ResourceKey, - color: Int, - part: HTItemPart, - material: RagiumMaterial, - count: Int = 1 - ) { - val tagEntry = HTItemResult.TagEntry(getter.getOrThrow(part.tagPrefix.itemTagKey(material))) - val fallback = HTSimpleDeferredItem(RagiumAPI.id(part.createName(material))) - val entry: HTItemResult.Entry = if (fallback.isBound) { - HTItemResult.WithFallbackEntry(tagEntry, HTItemResult.SimpleEntry(fallback)) - } else { - tagEntry - } - register( - key, - color, - entry.toResult(count) - ) - } - - register(COPPER, 0xc15a36, HTItemPart.DUST, RagiumMaterial.Metal.COPPER, 3) - register(IRON, 0x777777, HTItemPart.DUST, RagiumMaterial.Metal.IRON, 2) - register(GOLD, 0xffcc00, HTItemPart.DUST, RagiumMaterial.Metal.GOLD, 2) - - register(NETHERITE_SCRAP, 0x473e3f, HTItemResult(ItemStackTemplate(Items.NETHERITE_SCRAP, 2))) - } -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt index daa089d8ac..db5a515930 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt @@ -5,17 +5,14 @@ package hiiragi283.ragium.api.data.recipe.builder import hiiragi283.lib.collection.toNel import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.util.HTDelegates import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.Identifier -import java.util.Optional import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -24,29 +21,16 @@ class RTElectrolyzingRecipeBuilder : HTProgressRecipeBuilder by HTDelegates.optionalInitialize() - @PublishedApi internal var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() - operator fun HTItemIngredient.unaryPlus() { - itemIngredient = Optional.of(this) - } - operator fun HTFluidIngredient.unaryPlus() { fluidIngredient = this } - inline fun itemIngredient(builderAction: HTItemIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemIngredientBuilder.build(builderAction) - } - - inline fun fluidIngredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt new file mode 100644 index 0000000000..b0678578da --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt @@ -0,0 +1,64 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.util.HTDelegates +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTWashingRecipe +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.resources.Identifier +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTWashingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.WASHING) { + override fun getRecipeId(): Identifier? = results.first().getId() + + override fun createRecipe(): RTWashingRecipe = + RTWashingRecipe(itemIngredient, fluidIngredient, results.toNel(), progressData) + + // Ingredient + var itemIngredient: HTItemIngredient by HTDelegates.onceInitialize() + + var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() + + operator fun HTItemIngredient.unaryPlus() { + itemIngredient = this + } + + operator fun HTFluidIngredient.unaryPlus() { + fluidIngredient = this + } + + inline fun itemIngredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) + } + + inline fun fluidIngredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal val results: MutableList = ObjectArrayList() + + inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + results += HTItemResultBuilder.build(builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 9fd9cbf0d2..63e983c216 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -2,17 +2,21 @@ package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToItemRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToFluidRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToItemAndFluidRecipeBuilder -import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTSingleRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTTripleItemToItemRecipeBuilder import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTAlloyingRecipe import hiiragi283.ragium.api.recipe.RTAssemblingRecipe import hiiragi283.ragium.api.recipe.RTBathingRecipe import hiiragi283.ragium.api.recipe.RTBrewingRecipe +import hiiragi283.ragium.api.recipe.RTCentrifugingRecipe import hiiragi283.ragium.api.recipe.RTCompressingRecipe import hiiragi283.ragium.api.recipe.RTCrushingRecipe import hiiragi283.ragium.api.recipe.RTCuttingRecipe @@ -47,12 +51,12 @@ data object RagiumRecipeBuilders { @JvmStatic inline fun compressing( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { + builderAction: HTItemToItemRecipeBuilder.() -> Unit + ): HTItemToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.COMPRESSING, ::RTCompressingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.COMPRESSING, ::RTCompressingRecipe).apply(builderAction) } @JvmStatic @@ -108,22 +112,22 @@ data object RagiumRecipeBuilders { @JvmStatic inline fun freezing( - builderAction: HTFluidToRecipeBuilder.ToItem.() -> Unit - ): HTFluidToRecipeBuilder.ToItem { + builderAction: HTFluidToItemRecipeBuilder.() -> Unit + ): HTFluidToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTFluidToRecipeBuilder.ToItem(RagiumConstants.FREEZING, ::RTFreezingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.FREEZING, ::RTFreezingRecipe).apply(builderAction) } @JvmStatic inline fun melting( - builderAction: HTItemToRecipeBuilder.ToFluid.() -> Unit - ): HTItemToRecipeBuilder.ToFluid { + builderAction: HTItemToFluidRecipeBuilder.() -> Unit + ): HTItemToFluidRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToFluid(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) } @JvmStatic @@ -156,11 +160,14 @@ data object RagiumRecipeBuilders { } @JvmStatic - inline fun electrolyzing(builderAction: RTElectrolyzingRecipeBuilder.() -> Unit): RTElectrolyzingRecipeBuilder { + inline fun centrifuging( + builderAction: HTFluidToDoubleFluidRecipeBuilder.() -> Unit + ): HTFluidToDoubleFluidRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return RTElectrolyzingRecipeBuilder().apply(builderAction) + return HTFluidToDoubleFluidRecipeBuilder(RagiumConstants.CENTRIFUGING, ::RTCentrifugingRecipe) + .apply(builderAction) } @JvmStatic @@ -181,6 +188,14 @@ data object RagiumRecipeBuilders { return RTReactingRecipeBuilder().apply(builderAction) } + @JvmStatic + inline fun washing(builderAction: RTWashingRecipeBuilder.() -> Unit): RTWashingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTWashingRecipeBuilder().apply(builderAction) + } + // Bio @JvmStatic inline fun brewing( @@ -203,6 +218,14 @@ data object RagiumRecipeBuilders { } // Electronics + @JvmStatic + inline fun electrolyzing(builderAction: RTElectrolyzingRecipeBuilder.() -> Unit): RTElectrolyzingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTElectrolyzingRecipeBuilder().apply(builderAction) + } + @JvmStatic inline fun resourceExtracting( builderAction: RTResourceExtractingRecipeBuilder.() -> Unit @@ -216,11 +239,11 @@ data object RagiumRecipeBuilders { // Arcane @JvmStatic inline fun enchanting( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { + builderAction: HTItemToItemRecipeBuilder.() -> Unit + ): HTItemToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.ENCHANTING, ::RTEnchantingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.ENCHANTING, ::RTEnchantingRecipe).apply(builderAction) } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index e72b74ffd3..87452f00c5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -2,6 +2,9 @@ package hiiragi283.ragium.api.material import hiiragi283.lib.data.lang.HTLangName import hiiragi283.lib.tag.HTMaterialLike +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import net.minecraft.resources.ResourceKey sealed interface RagiumMaterial : HTMaterialLike, @@ -10,16 +13,17 @@ sealed interface RagiumMaterial : @JvmField val entries: Sequence = sequence { yieldAll(Fuel.entries) - yieldAll(Mineral.entries) + yieldAll(DustLike.entries) yieldAll(Gem.entries) - yieldAll(Metal.entries) - yieldAll(Other.entries) + yieldAll(MetalLike.entries) } @JvmField val COMPARATOR: Comparator = compareBy(RagiumMaterial::materialName) } + val chemicalKey: ResourceKey? + enum class Fuel(langName: HTLangName) : RagiumMaterial, HTLangName by langName { @@ -38,24 +42,36 @@ sealed interface RagiumMaterial : constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + override val chemicalKey: ResourceKey = RagiumChemicals.CARBON + override val materialName: String = name.lowercase() } - enum class Mineral(langName: HTLangName) : - RagiumMaterial, + /** + * @since 26.1.8 + */ + sealed interface DustLike : RagiumMaterial { + companion object { + @JvmField + val entries: Sequence = sequence { + yieldAll(Mineral.entries) + yieldAll(Chemicals.entries) + yieldAll(Other.entries) + } + } + } + + enum class Mineral(langName: HTLangName, override val chemicalKey: ResourceKey?) : + DustLike, HTLangName by langName { // Minecraft - REDSTONE("Redstone", "レッドストーン") { - override val isVanilla: Boolean = true - }, - GLOWSTONE("Glowstone", "グロウストーン") { - override val isVanilla: Boolean = true - }, + REDSTONE("Redstone", "レッドストーン"), + GLOWSTONE("Glowstone", "グロウストーン"), // Common - SALT("Salt", "食塩"), - SULFUR("Sulfur", "硫黄"), - NITER("Niter", "硝石"), + SALT("Salt", "食塩", RagiumChemicals.SODIUM_CHLORIDE), + SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), + NITER("Niter", "硝石", RagiumChemicals.POTASSIUM_NITRATE), BORAX("Borax", "ホウ砂"), /** @@ -67,21 +83,67 @@ sealed interface RagiumMaterial : RAGINITE("Raginite", "ラギナイト") ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + val isVanilla: Boolean get() = this == REDSTONE || this == GLOWSTONE + + override val materialName: String = name.lowercase() + } + + /** + * @since 26.1.8 + */ + enum class Chemicals(langName: HTLangName, override val chemicalKey: ResourceKey?) : + DustLike, + HTLangName by langName { + // Common + CARBON("Carbon", "炭素", RagiumChemicals.CARBON), + + /** + * @since 26.1.8 + */ + SODIUM_CARBONATE("Sodium Carbonate", "炭酸ナトリウム"), + + /** + * @since 26.1.7 + */ + ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), + + /** + * @since 26.1.7 + */ + SILICON("Silicon", "シリコン", RagiumChemicals.SILICON), + + /** + * @since 26.1.8 + */ + CALCIUM_CARBONATE("Calcium Carbonate", "炭酸カルシウム"), + + /** + * @since 26.1.8 + */ + CALCIUM_OXIDE("Calcium Oxide", "酸化カルシウム") + ; - open val isVanilla: Boolean = false + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) override val materialName: String = name.lowercase() } - enum class Gem(langName: HTLangName) : + enum class Gem(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { // Minecraft LAPIS("Lapis", "ラピス"), - QUARTZ("Quartz", "水晶"), - AMETHYST("Amethyst", "アメジスト"), - DIAMOND("Diamond", "ダイヤモンド"), + QUARTZ("Quartz", "水晶", RagiumChemicals.SILICON_DIOXIDE), + AMETHYST("Amethyst", "アメジスト", RagiumChemicals.SILICON_DIOXIDE), + DIAMOND("Diamond", "ダイヤモンド", RagiumChemicals.DIAMOND), EMERALD("Emerald", "エメラルド"), ECHO("Echo", "残響"), PRISMARINE("Prismarine", "プリズマリン"), @@ -91,92 +153,111 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - FLUORITE("Fluorite", "蛍石"), + FLUORITE("Fluorite", "蛍石", RagiumChemicals.FLUORITE), /** * @since 26.1.7 */ - CRYOLITE("Cryolite", "氷晶石") + CRYOLITE("Cryolite", "氷晶石", RagiumChemicals.CRYOLITE) ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) override val materialName: String = name.lowercase() } - enum class Metal(langName: HTLangName) : - RagiumMaterial, + /** + * @since 26.1.8 + */ + sealed interface MetalLike : RagiumMaterial { + companion object { + @JvmField + val entries: Sequence = sequence { + yieldAll(Metal.entries) + yieldAll(Alloy.entries) + } + } + } + + enum class Metal(langName: HTLangName, override val chemicalKey: ResourceKey?) : + MetalLike, HTLangName by langName { // Minecraft - COPPER("Copper", "銅"), - IRON("Iron", "鉄"), - GOLD("Gold", "金"), - NETHERITE("Netherite", "ネザライト") { - override val hasRawVariant: Boolean = false - }, + COPPER("Copper", "銅", RagiumChemicals.COPPER), + IRON("Iron", "鉄", RagiumChemicals.IRON), + GOLD("Gold", "金", RagiumChemicals.GOLD), // Common /** * @since 26.1.7 */ - ALUMINUM("Aluminum", "アルミニウム"), + ALUMINUM("Aluminum", "アルミニウム", RagiumChemicals.ALUMINUM) + ; + + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + override val materialName: String = name.lowercase() + } + + enum class Alloy(langName: HTLangName, override val chemicalKey: ResourceKey?) : + MetalLike, + HTLangName by langName { + // Minecraft + NETHERITE("Netherite", "ネザライト"), // Ragium /** * @since 26.1.3 */ - SOOTY_IRON("Sooty Iron", "煤鉄") { - override val hasRawVariant: Boolean = false - }, + SOOTY_IRON("Sooty Iron", "煤鉄"), /** * @since 26.1.3 */ - BLACK_STEEL("Black Steel", "黒鋼") { - override val hasRawVariant: Boolean = false - }, + BLACK_STEEL("Black Steel", "黒鋼"), /** * @since 26.1.4 */ - VOID_METAL("Void Metal", "虚金") { - override val hasRawVariant: Boolean = false - } + VOID_METAL("Void Metal", "虚金") ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) - - open val hasRawVariant: Boolean = true + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) override val materialName: String = name.lowercase() } - enum class Other(val isPulp: Boolean, langName: HTLangName) : - RagiumMaterial, + enum class Other(langName: HTLangName, override val chemicalKey: ResourceKey?) : + DustLike, HTLangName by langName { // Minecraft - WOOD(true, "Wood", "木"), - GLASS(false, "Glass", "ガラス"), - OBSIDIAN(false, "Obsidian", "黒曜石"), - PAPER(true, "Paper", "紙"), - - // Common - CARBON(false, "Carbon", "炭素"), - - /** - * @since 26.1.7 - */ - ALUMINA(false, "Alumina", "アルミナ"), - - /** - * @since 26.1.7 - */ - SILICON(false, "Silicon", "シリコン") + WOOD("Wood", "木") { + override val isPulp: Boolean = true + }, + GLASS("Glass", "ガラス", RagiumChemicals.SILICON_DIOXIDE), + OBSIDIAN("Obsidian", "黒曜石"), + PAPER("Paper", "紙") { + override val isPulp: Boolean = true + } ; - constructor(isPulp: Boolean, enName: String, jaName: String) : this(isPulp, HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + open val isPulp: Boolean = false override val materialName: String = name.lowercase() } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt new file mode 100644 index 0000000000..d935afbb57 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt @@ -0,0 +1,25 @@ +package hiiragi283.ragium.api.recipe + +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.result.HTFluidResult +import net.minecraft.world.item.crafting.RecipeSerializer + +class RTCentrifugingRecipe(ingredient: HTFluidIngredient, result: Nel, progressData: HTProgressData) : + HTFluidToDoubleFluidRecipe.Basic(ingredient, result, progressData), + HTSerializableRecipe { + companion object { + @JvmField + val SERIALIZER: RecipeSerializer = + RecipeSerializer(codec(::RTCentrifugingRecipe), streamCodec(::RTCentrifugingRecipe)) + } + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.CENTRIFUGING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.CENTRIFUGING +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt index 9c2f742687..96be228b6f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt @@ -10,45 +10,34 @@ import hiiragi283.lib.recipe.base.HTProgressRecipe import hiiragi283.lib.recipe.base.HTRecipeFactories import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.ingredient.test -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.createOrEmpty import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.codec.compactNelFieldOf -import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.lib.serialization.network.nelOf -import hiiragi283.lib.util.fold import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.item.ItemInstance -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeSerializer import net.neoforged.neoforge.fluids.FluidInstance import net.neoforged.neoforge.fluids.FluidStack -import java.util.Optional @JvmRecord data class RTElectrolyzingRecipe( - val itemIngredient: Optional, - val fluidIngredient: HTFluidIngredient, + val ingredient: HTFluidIngredient, val results: Nel, override val progressData: HTProgressData -) : HTRecipePredicates.ItemAndFluid, - HTRecipeFactories.ItemAndFluid>, - HTProgressRecipe.Simple, - HTSerializableRecipe { +) : HTRecipePredicates.SingleFluid, + HTRecipeFactories.SingleFluidTo, + HTProgressRecipe.Simple, + HTSerializableRecipe { companion object { @JvmField val CODEC: MapCodec = HTCodecs.recordMap { instance -> instance.group( - HTItemIngredient.CODEC - .optionalFieldOf(HTConstants.ITEM_INGREDIENT) - .forGetter(RTElectrolyzingRecipe::itemIngredient), HTFluidIngredient.CODEC - .fieldOf(HTConstants.FLUID_INGREDIENT) - .forGetter(RTElectrolyzingRecipe::fluidIngredient), + .fieldOf(HTConstants.INGREDIENT) + .forGetter(RTElectrolyzingRecipe::ingredient), HTFluidResult.CODEC .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 3) .forGetter(RTElectrolyzingRecipe::results), @@ -58,10 +47,8 @@ data class RTElectrolyzingRecipe( @JvmField val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.optional(HTItemIngredient.STREAM_CODEC), - RTElectrolyzingRecipe::itemIngredient, HTFluidIngredient.STREAM_CODEC, - RTElectrolyzingRecipe::fluidIngredient, + RTElectrolyzingRecipe::ingredient, HTFluidResult.STREAM_CODEC.nelOf(), RTElectrolyzingRecipe::results, HTProgressData.STREAM_CODEC, @@ -73,15 +60,11 @@ data class RTElectrolyzingRecipe( val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) } - override fun test(first: ItemInstance, second: FluidInstance): Boolean = - itemIngredient.test(first) && fluidIngredient.test(second) + override fun test(input: FluidInstance): Boolean = ingredient.test(input) - override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = Pair( - itemIngredient.fold(ItemStack::EMPTY) { it.getMatchingStack(first) }, - fluidIngredient.getMatchingStack(second) - ) + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) - override fun apply(first: ItemInstance, second: FluidInstance): Triple = Triple( + override fun apply(input: FluidInstance): ElectrolyzedResult = ElectrolyzedResult( results.head.create(), results.getOrNull(1).createOrEmpty(), results.getOrNull(2).createOrEmpty() @@ -90,4 +73,7 @@ data class RTElectrolyzingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ELECTROLYZING override fun getType(): HTRecipeType = RagiumRecipeTypes.ELECTROLYZING + + @JvmRecord + data class ElectrolyzedResult(val right: FluidStack, val left: FluidStack, val main: FluidStack) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt new file mode 100644 index 0000000000..30e0d26098 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt @@ -0,0 +1,81 @@ +package hiiragi283.ragium.api.recipe + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.createOrEmpty +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.compactNelFieldOf +import hiiragi283.lib.serialization.network.nelOf +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.RecipeSerializer +import net.neoforged.neoforge.fluids.FluidInstance + +@JvmRecord +data class RTWashingRecipe( + val itemIngredient: HTItemIngredient, + val fluidIngredient: HTFluidIngredient, + val results: Nel, + override val progressData: HTProgressData +) : HTItemAndFluidToRecipe>, + HTProgressRecipe.Simple, + HTSerializableRecipe { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTItemIngredient.CODEC + .fieldOf(HTConstants.ITEM_INGREDIENT) + .forGetter(RTWashingRecipe::itemIngredient), + HTFluidIngredient.CODEC + .fieldOf(HTConstants.FLUID_INGREDIENT) + .forGetter(RTWashingRecipe::fluidIngredient), + HTItemResult.CODEC + .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) + .forGetter(RTWashingRecipe::results), + HTProgressData.CODEC.forGetter(RTWashingRecipe::progressData) + ).apply(instance, ::RTWashingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTItemIngredient.STREAM_CODEC, + RTWashingRecipe::itemIngredient, + HTFluidIngredient.STREAM_CODEC, + RTWashingRecipe::fluidIngredient, + HTItemResult.STREAM_CODEC.nelOf(), + RTWashingRecipe::results, + HTProgressData.STREAM_CODEC, + RTWashingRecipe::progressData, + ::RTWashingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + } + + override fun test(first: ItemInstance, second: FluidInstance): Boolean = + itemIngredient.test(first) && fluidIngredient.test(second) + + override fun apply(first: ItemInstance, second: FluidInstance): Pair = + results.head.create() to results.getOrNull(1).createOrEmpty() + + override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = + itemIngredient.getMatchingStack(first) to fluidIngredient.getMatchingStack(second) + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.WASHING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.WASHING +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index ae8e51d504..5ae523a5a1 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -71,7 +72,7 @@ data object RagiumRecipeLookups { val BATHING: HTCompoundRecipeLookup = create(RagiumConstants.BATHING) @JvmField - val ELECTROLYZING: HTRecipeLookup = create(RagiumRecipeTypes.ELECTROLYZING) + val CENTRIFUGING: HTCompoundRecipeLookup = create(RagiumConstants.CENTRIFUGING) @JvmField val MIXING: HTCompoundRecipeLookup = create(RagiumConstants.MIXING) @@ -79,6 +80,9 @@ data object RagiumRecipeLookups { @JvmField val REACTING: HTCompoundRecipeLookup = create(RagiumConstants.REACTING) + @JvmField + val WASHING: HTRecipeLookup = create(RagiumRecipeTypes.WASHING) + // Bio @JvmField val BREWING: HTCompoundRecipeLookup = create(RagiumConstants.BREWING) @@ -87,6 +91,9 @@ data object RagiumRecipeLookups { val PLANTING: HTCompoundRecipeLookup = create(RagiumConstants.PLANTING) // Electronics + @JvmField + val ELECTROLYZING: HTRecipeLookup = create(RagiumRecipeTypes.ELECTROLYZING) + @JvmField val RESOURCE_EXTRACTING: HTRecipeLookup = create(RagiumRecipeTypes.RESOURCE_EXTRACTING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index 73d98844eb..6e7fdccceb 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -88,8 +88,8 @@ data object RagiumRecipeSerializers { register(RagiumConstants.BATHING, RTBathingRecipe.SERIALIZER) @JvmField - val ELECTROLYZING: RecipeSerializer = - register(RagiumConstants.ELECTROLYZING, RTElectrolyzingRecipe.SERIALIZER) + val CENTRIFUGING: RecipeSerializer = + register(RagiumConstants.CENTRIFUGING, RTCentrifugingRecipe.SERIALIZER) @JvmField val MIXING: RecipeSerializer = @@ -99,6 +99,10 @@ data object RagiumRecipeSerializers { val REACTING: RecipeSerializer = register(RagiumConstants.REACTING, RTReactingRecipe.Basic.SERIALIZER) + @JvmField + val WASHING: RecipeSerializer = + register(RagiumConstants.WASHING, RTWashingRecipe.SERIALIZER) + // Bio @JvmField val BREWING: RecipeSerializer = @@ -109,6 +113,10 @@ data object RagiumRecipeSerializers { register(RagiumConstants.PLANTING, RTPlantingRecipe.SERIALIZER) // Electronics + @JvmField + val ELECTROLYZING: RecipeSerializer = + register(RagiumConstants.ELECTROLYZING, RTElectrolyzingRecipe.SERIALIZER) + @JvmField val RESOURCE_EXTRACTING: RecipeSerializer = register(RagiumConstants.RESOURCE_EXTRACTING, RTResourceExtractingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 3a44487c4f..3a3f03ef8a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -68,7 +68,7 @@ data object RagiumRecipeTypes { val BATHING: HTRecipeType = create(RagiumConstants.BATHING) @JvmField - val ELECTROLYZING: HTRecipeType = create(RagiumConstants.ELECTROLYZING) + val CENTRIFUGING: HTRecipeType = create(RagiumConstants.CENTRIFUGING) @JvmField val MIXING: HTRecipeType = create(RagiumConstants.MIXING) @@ -76,6 +76,9 @@ data object RagiumRecipeTypes { @JvmField val REACTING: HTRecipeType = create(RagiumConstants.REACTING) + @JvmField + val WASHING: HTRecipeType = create(RagiumConstants.WASHING) + // Bio @JvmField val BREWING: HTRecipeType = create(RagiumConstants.BREWING) @@ -84,6 +87,9 @@ data object RagiumRecipeTypes { val PLANTING: HTRecipeType = create(RagiumConstants.PLANTING) // Electronics + @JvmField + val ELECTROLYZING: HTRecipeType = create(RagiumConstants.ELECTROLYZING) + @JvmField val RESOURCE_EXTRACTING: HTRecipeType = create(RagiumConstants.RESOURCE_EXTRACTING) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt index c77df37a94..297c56d54a 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt @@ -24,7 +24,7 @@ class HTItemAndFluidToItemRecipeCategory( recipe: HTItemAndFluidToRecipe.BasicItem, focuses: IFocusGroup ) { - // input + // inputs builder .addInputSlot(getPosition(0), getPosition(0)) .add(recipe.fluidIngredient) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt index dfe2070df7..8ca08995c9 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt @@ -30,16 +30,16 @@ class HTItemToDoubleItemRecipeCategory( .addInputSlot(getPosition(0), getPosition(0)) .add(recipe.ingredient) .setSlotBackground(HTBackgroundType.INPUT) - // output + // outputs builder .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result.head) + .add(recipe.results.head) .setSlotBackground(HTBackgroundType.OUTPUT) val slot: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(5), getPosition(0)) .setSlotBackground(HTBackgroundType.EXTRA_OUTPUT) - recipe.result.getOrNull(1)?.let(slot::add) + recipe.results.getOrNull(1)?.let(slot::add) } override fun setupRecipeExtras( diff --git a/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt b/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt new file mode 100644 index 0000000000..8aefbfb37d --- /dev/null +++ b/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt @@ -0,0 +1,25 @@ +package hiiragi283.ragium.api.data.chemical + +import hiiragi283.lib.resource.toLanguageKey +import hiiragi283.lib.text.Text +import hiiragi283.lib.text.translatableText +import hiiragi283.ragium.api.data.RagiumDataComponents +import net.minecraft.ChatFormatting +import net.minecraft.client.Minecraft +import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponentGetter + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object HTClientChemicalHelper { + @JvmStatic + fun addToTooltip(getter: DataComponentGetter, acceptor: (Text) -> Unit) { + val holder: Holder = getter.get(RagiumDataComponents.CHEMICAL) ?: return + when { + Minecraft.getInstance().hasShiftDown() -> holder.key?.toLanguageKey()?.let(::translatableText) + else -> holder.value().getText() + }?.withStyle(ChatFormatting.YELLOW)?.let(acceptor) + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 19b1882712..a37d0c6c27 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -17,6 +17,8 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.HTCompoundChemical +import hiiragi283.ragium.api.data.chemical.HTSimpleChemical import hiiragi283.ragium.api.recipe.RagiumRecipeSerializers import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation @@ -86,10 +88,10 @@ data object Ragium : HTCommonMod() { ) } event.register(Registries.DATA_COMPONENT_TYPE) { helper -> + helper.register(RagiumAPI.id(HTConstants.CHEMICAL), RagiumDataComponents.CHEMICAL) 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) - helper.register(RagiumAPI.id("ore_slurry_data"), RagiumDataComponents.ORE_SLURRY_DATA) helper.register(RagiumAPI.id("owner_id"), RagiumDataComponents.OWNER_ID) } event.register(Registries.MENU) { helper -> @@ -115,6 +117,10 @@ data object Ragium : HTCommonMod() { helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionFluidIngredient.TYPE) } + event.register(RagiumRegistries.Keys.CHEMICAL_TYPE) { helper -> + helper.register(RagiumAPI.id("simple"), HTSimpleChemical.TYPE) + helper.register(RagiumAPI.id("compound"), HTCompoundChemical.TYPE) + } event.register(RagiumRegistries.Keys.FLUID_RESULT_TYPE) { helper -> helper.register(RagiumAPI.id("simple"), HTFluidResult.SimpleEntry.TYPE) helper.register(RagiumAPI.id(HTConstants.POTION), HTFluidResult.PotionEntry.TYPE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index fac9ba6330..0410d3db04 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -10,26 +10,32 @@ import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.lookup.fromRecipeType import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.createKey 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.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.chemical.RagiumChemicals 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.RTOreSlurryWashingRecipe -import hiiragi283.ragium.common.recipe.RTOreSolvingRecipe 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.HolderGetter +import net.minecraft.core.HolderLookup import net.minecraft.core.HolderSet import net.minecraft.core.RegistryAccess +import net.minecraft.core.component.DataComponentMap import net.minecraft.core.registries.BuiltInRegistries +import net.minecraft.core.registries.Registries import net.minecraft.resources.ResourceKey import net.minecraft.world.item.DyeColor import net.minecraft.world.item.alchemy.Potion @@ -50,6 +56,7 @@ import net.neoforged.neoforge.registries.datamaps.builtin.Waxable internal data object RagiumCommon { fun initialize(event: FMLCommonSetupEvent) { event.enqueueWork(::initFluidInteractions) + event.enqueueWork(::initFluidComponents) event.enqueueWork(::initRecipeLookups) } @@ -71,6 +78,42 @@ internal data object RagiumCommon { } } + private fun initFluidComponents() { + fun setChemical(content: HTFluidContent, key: ResourceKey) { + BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.add( + content.keyOrThrow + ) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(RagiumDataComponents.CHEMICAL, provider.getOrThrow(key)) + } + } + + BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.add( + Registries.FLUID.createKey(vanillaId("water")) + ) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(RagiumDataComponents.CHEMICAL, provider.getOrThrow(RagiumChemicals.WATER)) + } + + setChemical(RagiumFluids.MOLTEN_GLASS, RagiumChemicals.SILICON_DIOXIDE) + + setChemical(RagiumFluids.HYDROGEN, RagiumChemicals.HYDROGEN) + setChemical(RagiumFluids.NITROGEN, RagiumChemicals.NITROGEN) + setChemical(RagiumFluids.OXYGEN, RagiumChemicals.OXYGEN) + setChemical(RagiumFluids.CHLORINE, RagiumChemicals.CHLORINE) + + setChemical(RagiumFluids.NITRIC_ACID, RagiumChemicals.NITRIC_ACID) + setChemical(RagiumFluids.HYDROGEN_FLUORIDE, RagiumChemicals.HYDROGEN_FLUORIDE) + setChemical(RagiumFluids.HYDROFLUORIC_ACID, RagiumChemicals.HYDROGEN_FLUORIDE) + + setChemical(RagiumFluids.SALT_WATER, RagiumChemicals.SODIUM_CHLORIDE) + setChemical(RagiumFluids.NAOH_SOLUTION, RagiumChemicals.SODIUM_HYDROXIDE) + setChemical(RagiumFluids.ALUMINA_SOLUTION, RagiumChemicals.ALUMINUM_OXIDE) + setChemical(RagiumFluids.SULFUR_DIOXIDE, RagiumChemicals.SULFUR_DIOXIDE) + setChemical(RagiumFluids.SULFUR_TRIOXIDE, RagiumChemicals.SULFUR_TRIOXIDE) + setChemical(RagiumFluids.SULFURIC_ACID, RagiumChemicals.SULFURIC_ACID) + setChemical(RagiumFluids.HYDROGEN_CHLORIDE, RagiumChemicals.HYDROGEN_CHLORIDE) + setChemical(RagiumFluids.HYDROCHLORIC_ACID, RagiumChemicals.HYDROGEN_CHLORIDE) + } + private fun initRecipeLookups() { // from recipe types RagiumRecipeLookups.ASSEMBLING.fromRecipeType(RagiumRecipeTypes.ASSEMBLING, identity()) @@ -86,6 +129,7 @@ internal data object RagiumCommon { RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) RagiumRecipeLookups.BATHING.fromRecipeType(RagiumRecipeTypes.BATHING, identity()) + RagiumRecipeLookups.CENTRIFUGING.fromRecipeType(RagiumRecipeTypes.CENTRIFUGING, identity()) RagiumRecipeLookups.MIXING.fromRecipeType(RagiumRecipeTypes.MIXING, identity()) RagiumRecipeLookups.REACTING.fromRecipeType(RagiumRecipeTypes.REACTING, identity()) @@ -189,13 +233,6 @@ internal data object RagiumCommon { }.build() } } - - RagiumRecipeLookups.MIXING.addRecipes( - RecipeKey(RagiumAPI.id("/${RagiumConstants.MIXING}", "ore_solvation")) to RTOreSolvingRecipe - ) - RagiumRecipeLookups.REACTING.addRecipes( - RecipeKey(RagiumAPI.id("/${RagiumConstants.REACTING}", "ore_slurry_washing")) to RTOreSlurryWashingRecipe - ) } private fun HolderGetter.Provider.getOrNull(content: HTFluidContent): HolderSet? = diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index bf74266fd5..e36e87622a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -15,10 +15,12 @@ import hiiragi283.lib.registry.HTDeferredBlockEntityType import hiiragi283.lib.registry.HTDeferredBlockRegister import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.ItemWithContextFactory +import hiiragi283.lib.transfer.fluid.HTItemAccessFluidHandler import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTOreBlockPart import hiiragi283.ragium.api.material.HTStorageBlockPart @@ -26,6 +28,7 @@ import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock import hiiragi283.ragium.common.block.storage.HTTankBlock import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import hiiragi283.ragium.common.item.block.HTCreativeTankBlockItem @@ -51,7 +54,6 @@ import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent import net.neoforged.neoforge.transfer.InfiniteResourceHandler import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler import net.neoforged.neoforge.transfer.fluid.FluidResource -import net.neoforged.neoforge.transfer.fluid.ItemAccessFluidHandler data object RagiumBlocks { @JvmStatic @@ -137,7 +139,11 @@ data object RagiumBlocks { material, REGISTER.registerSimple( part.createName(material), - blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) } + blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) }, + itemProp = { prop: Item.Properties -> + material.chemicalKey?.let { prop.delayedHolderComponent(RagiumDataComponents.CHEMICAL, it) } + prop + } ) ) } @@ -149,9 +155,9 @@ data object RagiumBlocks { RagiumMaterial.Fuel.COAL_COKE to copyOf(Blocks.COAL_BLOCK).mapColor(MapColor.COLOR_GRAY), RagiumMaterial.Fuel.PITCH_COKE to copyOf(Blocks.COAL_BLOCK).mapColor(MapColor.COLOR_BLUE), RagiumMaterial.Metal.ALUMINUM to copyOf(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_PINK), - RagiumMaterial.Metal.SOOTY_IRON to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_GRAY), - RagiumMaterial.Metal.BLACK_STEEL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_BLACK), - RagiumMaterial.Metal.VOID_METAL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.TERRACOTTA_BLUE) + RagiumMaterial.Alloy.SOOTY_IRON to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_GRAY), + RagiumMaterial.Alloy.BLACK_STEEL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_BLACK), + RagiumMaterial.Alloy.VOID_METAL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.TERRACOTTA_BLUE) ).associateTo( sortedMapOf(RagiumMaterial.COMPARATOR) ) { (material: RagiumMaterial, properties: BlockBehaviour.Properties) -> @@ -185,8 +191,11 @@ data object RagiumBlocks { // Fluorite @JvmField - val FLUORITE_BLOCK: HTSimpleDeferredBlockAndItem = - REGISTER.registerSimple("fluorite_block", copyOf(Blocks.QUARTZ_BLOCK).mapColor(MapColor.COLOR_GREEN)) + val FLUORITE_BLOCK: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "fluorite_block", + copyOf(Blocks.QUARTZ_BLOCK).mapColor(MapColor.COLOR_GREEN), + itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.FLUORITE) } + ) @JvmField val FLUORITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( @@ -205,8 +214,11 @@ data object RagiumBlocks { // Cryolite @JvmField - val CRYOLITE_BLOCK: HTSimpleDeferredBlockAndItem = - REGISTER.registerSimple("cryolite_block", copyOf(Blocks.QUARTZ_BLOCK)) + val CRYOLITE_BLOCK: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "cryolite_block", + copyOf(Blocks.QUARTZ_BLOCK), + itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } + ) @JvmField val CRYOLITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( @@ -276,10 +288,6 @@ data object RagiumBlocks { val CHEMICAL_REACTOR: HTBasicDeferredBlockAndItem = registerFakeMachine(RagiumConstants.CHEMICAL_REACTOR) - @JvmField - val ELECTROLYZER: HTBasicDeferredBlockAndItem = - registerFakeMachine(RagiumConstants.ELECTROLYZER) - @JvmField val MIXER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.MIXER) @@ -294,6 +302,10 @@ data object RagiumBlocks { registerMachine(RagiumBlockEntityTypes.PLANTER) // Electronics + @JvmField + val ELECTROLYZER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ELECTROLYZER) + @JvmField val PRECISION_ASSEMBLER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.PRECISION_ASSEMBLER) @@ -326,12 +338,12 @@ data object RagiumBlocks { 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, ELECTROLYZER) put(HTMachineType.ELECTRONICS, PRECISION_ASSEMBLER) put(HTMachineType.ELECTRONICS, SCANNER) @@ -339,6 +351,14 @@ data object RagiumBlocks { } ) + // Bus // + + @JvmField + val FLUID_OUTPUT_BUS: HTBasicDeferredBlockAndItem = registerMachine( + RagiumBlockEntityTypes.FLUID_OUTPUT_BUS, + ::HTFluidBusBlock + ) + // Storage // @JvmField @@ -391,11 +411,15 @@ data object RagiumBlocks { event.registerItem( HTFluidCapabilities.item, { _, access -> - ItemAccessFluidHandler( - access, - RagiumDataComponents.FLUID, - RagiumConfig.SERVER.tankCapacity.asInt - ) + HTItemAccessFluidHandler.output(access, RagiumConfig.SERVER.tankCapacity.asInt) + }, + FLUID_OUTPUT_BUS + ) + + event.registerItem( + HTFluidCapabilities.item, + { _, access -> + HTItemAccessFluidHandler.create(access, RagiumConfig.SERVER.tankCapacity.asInt) }, TANK ) @@ -425,17 +449,17 @@ data object RagiumBlocks { private fun modifyDefaultComponents(event: ModifyDefaultComponentsEvent) { // Block setOf( - RagiumMaterial.Metal.BLACK_STEEL to Rarity.UNCOMMON, - RagiumMaterial.Metal.VOID_METAL to Rarity.RARE + RagiumMaterial.Alloy.BLACK_STEEL to Rarity.UNCOMMON, + RagiumMaterial.Alloy.VOID_METAL to Rarity.RARE ).forEach { (material: RagiumMaterial, rarity: Rarity) -> for (part: HTBlockPart in HTBlockPart.entries) { - val block: ItemLike = RagiumBlocks.MATERIAL_BLOCKS[part, material] ?: continue + val block: ItemLike = MATERIAL_BLOCKS[part, material] ?: continue event.modify(block) { builder: DataComponentMap.Builder, _, _ -> builder.set(DataComponents.RARITY, rarity) } } } - event.modify(RagiumBlocks.CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> + event.modify(CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> builder.set(DataComponents.RARITY, Rarity.EPIC) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt index aff07609dc..2fb94841bd 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt @@ -7,8 +7,10 @@ import hiiragi283.lib.gui.widget.HTWidgetHolder import hiiragi283.lib.transfer.fluid.HTBasicFluidTank import hiiragi283.lib.transfer.item.HTBasicItemSlot import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.common.block.HTHorizontalEntityBlock import hiiragi283.ragium.common.block.HTMachineBlock import net.minecraft.core.BlockPos +import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState @@ -19,6 +21,8 @@ abstract class HTBaseMachineBlockEntity(type: BlockEntityType<*>, pos: BlockPos, HTBlockEntityWithMenu { protected fun getTankCapacity(): IntSupplier = RagiumConfig.SERVER.machine.tankCapacity + fun getFront(): Direction = this.blockState.getValue(HTHorizontalEntityBlock.FACING) + fun isActive(): Boolean = isActive(this.blockState) fun isActive(state: BlockState): Boolean = state.getOptionalValue(HTMachineBlock.IS_ACTIVE).orElseGet { false } 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 d354f3c0e2..6d3a3079a7 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -19,6 +19,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTChemicalBathBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCompressorBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCrusherBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCuttingMachineBlockEntity +import hiiragi283.ragium.common.block.entity.machine.HTElectrolyzerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTEnchanterBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTFreezerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTMelterBlockEntity @@ -29,6 +30,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTProcessorBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeBatteryBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeTankBlockEntity +import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTTankBlockEntity import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import net.minecraft.core.Direction @@ -112,6 +114,10 @@ data object RagiumBlockEntityTypes { registerTick(RagiumConstants.PLANTER, ::HTPlanterBlockEntity) // Electronics + @JvmField + val ELECTROLYZER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.ELECTROLYZER, ::HTElectrolyzerBlockEntity) + @JvmField val PRECISION_ASSEMBLER: HTDeferredBlockEntityType = registerTick(RagiumConstants.PRECISION_ASSEMBLER, ::HTPrecisionAssemblerBlockEntity) @@ -121,6 +127,12 @@ data object RagiumBlockEntityTypes { val ENCHANTER: HTDeferredBlockEntityType = registerTick(RagiumConstants.ENCHANTER, ::HTEnchanterBlockEntity) + // Bus // + + @JvmField + val FLUID_OUTPUT_BUS: HTDeferredBlockEntityType = + registerTick("fluid_output_bus", ::HTFluidOutputBusBlockEntity) + // Storage // @JvmField @@ -182,9 +194,12 @@ data object RagiumBlockEntityTypes { registerProcessor(BREWERY.get()) registerProcessor(PLANTER.get()) + registerProcessor(ELECTROLYZER.get()) registerProcessor(PRECISION_ASSEMBLER.get()) registerProcessor(ENCHANTER.get()) + // Bus + registerBlockEntity(FLUID_OUTPUT_BUS.get()) // Storage registerBlockEntity(TANK.get()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt new file mode 100644 index 0000000000..3345e30245 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt @@ -0,0 +1,36 @@ +package hiiragi283.ragium.common.block.entity.bus + +import hiiragi283.lib.registry.HTDeferredBlockEntityType +import hiiragi283.ragium.common.block.HTBasicEntityBlock +import net.minecraft.core.BlockPos +import net.minecraft.world.InteractionHand +import net.minecraft.world.InteractionResult +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.phys.BlockHitResult +import net.neoforged.neoforge.transfer.fluid.FluidUtil + +open class HTFluidBusBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : + HTBasicEntityBlock(type, properties) { + override fun useItemOn( + itemStack: ItemStack, + state: BlockState, + level: Level, + pos: BlockPos, + player: Player, + hand: InteractionHand, + hitResult: BlockHitResult + ): InteractionResult { + val result: InteractionResult = super.useItemOn(itemStack, state, level, pos, player, hand, hitResult) + if (itemStack.isEmpty) return result + if (!player.isShiftKeyDown) { + val moved: Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) + if (moved) { + return InteractionResult.SUCCESS + } + } + return result + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt new file mode 100644 index 0000000000..1e7a03f10f --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt @@ -0,0 +1,151 @@ +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.handler.HTFluidInputTank +import hiiragi283.lib.recipe.handler.HTOutputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlotHelper +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.lookup.HTRecipeCache +import hiiragi283.lib.transfer.fluid.HTBasicFluidTank +import hiiragi283.lib.transfer.useTransaction +import hiiragi283.lib.world.getTypedBlockEntity +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeLookups +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity +import hiiragi283.ragium.common.gui.widget.HTFluidWidget +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.core.Direction +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.FluidInstance +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.transfer.transaction.Transaction + +class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : + HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.ELECTROLYZER.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.ELECTROLYZING) + + 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< + HTSingleFluidRecipeInput, + RTElectrolyzingRecipe.ElectrolyzedResult, + RTElectrolyzingRecipe + >() { + private val machine: HTElectrolyzerBlockEntity = this@HTElectrolyzerBlockEntity + private val front: Direction get() = machine.getFront() + private val inputTank: HTFluidInputTank by lazy { HTFluidInputTank(machine.inputTank) } + + private val outputTank: HTOutputSlot by lazy { HTOutputSlotHelper.forFluid(machine.outputTank) } + private val rightOutputTank: HTOutputSlot? get() = level + ?.getTypedBlockEntity(blockPos.relative(front.clockWise)) + ?.tank + ?.let(HTOutputSlotHelper::forFluid) + private val leftOutputTank: HTOutputSlot? get() = level + ?.getTypedBlockEntity(blockPos.relative(front.counterClockWise)) + ?.tank + ?.let(HTOutputSlotHelper::forFluid) + + override fun createInput(): HTSingleFluidRecipeInput = HTSingleFluidRecipeInput(inputTank.getStoredInput()) + + override fun findRecipe(level: ServerLevel, input: HTSingleFluidRecipeInput): RTElectrolyzingRecipe? = + cache.findFirstRecipe(input, level) + + override fun canComplete( + recipe: RTElectrolyzingRecipe, + input: HTSingleFluidRecipeInput, + output: RTElectrolyzingRecipe.ElectrolyzedResult + ): Boolean = + rightOutputTank != null && leftOutputTank != null && useTransaction { transaction: Transaction -> + val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) + when { + inputTank.use(inputConsume, transaction).failed -> false + + else -> { + val (right: FluidStack, left: FluidStack, main: FluidStack) = output + when { + rightOutputTank!!.take(right, transaction) != HTOutputSlot.TakeResult.FULL -> false + leftOutputTank!!.take(left, transaction) != HTOutputSlot.TakeResult.FULL -> false + else -> outputTank.take(main, transaction).fullOrNoneTaken + } + } + } + } + + override fun onComplete( + recipe: RTElectrolyzingRecipe, + input: HTSingleFluidRecipeInput, + output: RTElectrolyzingRecipe.ElectrolyzedResult + ) { + useTransaction { transaction: Transaction -> + val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) + inputTank.use(inputConsume, transaction) + val (right: FluidStack, left: FluidStack, main: FluidStack) = output + outputTank.take(main, transaction) + rightOutputTank?.take(right, transaction) + leftOutputTank?.take(left, transaction) + transaction.commit() + } + playSound(SoundEvents.FIREWORK_ROCKET_TWINKLE) + } + } + } + + private lateinit var inputTank: HTBasicFluidTank + private lateinit var outputTank: HTBasicFluidTank + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + inputTank = builder.addSlot(HTSlotInfo.INPUT, HTVariableFluidTank.input(getTankCapacity(), listener)) + outputTank = builder.addSlot(HTSlotInfo.OUTPUT, HTVariableFluidTank.output(getTankCapacity(), listener)) + } + + override fun setupMenu(widgetHolder: HTWidgetHolder) { + super.setupMenu(widgetHolder) + addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(3.75), HTSlotHelper.getSlotPosY(2)) + // progress + addProgressBar(widgetHolder) + // inputs + widgetHolder += HTFluidWidget.Tank( + inputTank, + HTSlotHelper.getSlotPosX(2), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.INPUT, + false + ) + widgetHolder.track(inputTank) + // output + widgetHolder += HTFluidWidget.Tank( + outputTank, + HTSlotHelper.getSlotPosX(6), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.OUTPUT, + false + ) + widgetHolder.track(outputTank) + } + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.electrolyzer +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt index 2de31fd35a..42069ac88d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt @@ -83,10 +83,8 @@ abstract class HTItemAndFluidToFluidBlockEntity( input: HTItemAndFluidRecipeInput, output: FluidStack ): Boolean = useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) when { inputSlot.use(itemInput, transaction).failed -> false inputTank.use(fluidInput, transaction).failed -> false @@ -100,10 +98,8 @@ abstract class HTItemAndFluidToFluidBlockEntity( output: FluidStack ) { useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) inputSlot.use(itemInput, transaction) inputTank.use(fluidInput, transaction) outputTank.take(output, transaction) 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 3c6b7d0374..313f51698b 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 @@ -80,10 +80,8 @@ abstract class HTItemAndFluidToItemBlockEntity( input: HTItemAndFluidRecipeInput, output: ItemStack ): Boolean = useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) when { inputSlot.use(itemInput, transaction).failed -> false inputTank.use(fluidInput, transaction).failed -> false @@ -97,10 +95,8 @@ abstract class HTItemAndFluidToItemBlockEntity( output: ItemStack ) { useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) inputSlot.use(itemInput, transaction) inputTank.use(fluidInput, transaction) outputSlot.take(output, transaction) 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 511f0332fd..5c2f676b11 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 @@ -79,7 +79,7 @@ abstract class HTItemToDoubleItemBlockEntity( when { inputSlot.use(inputConsume, transaction).failed -> false primarySlot.take(output.first, transaction) != HTOutputSlot.TakeResult.FULL -> false - else -> secondarySlot.take(output.second, transaction) == HTOutputSlot.TakeResult.FULL + else -> secondarySlot.take(output.second, transaction).fullOrNoneTaken } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt index 19aa9a1a61..20b4756049 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt @@ -4,6 +4,8 @@ import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTCreativeFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap @@ -13,9 +15,12 @@ import net.neoforged.neoforge.transfer.fluid.FluidResource class HTCreativeTankBlockEntity(pos: BlockPos, state: BlockState) : HTBaseTankBlockEntity(RagiumBlockEntityTypes.CREATIVE_TANK.get(), pos, state) { - override val tank: HTCreativeFluidTank = HTCreativeFluidTank() + override lateinit var tank: HTCreativeFluidTank + private set - override fun initTank(listener: Runnable) {} + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot(HTSlotInfo.INPUT, HTCreativeFluidTank()) + } // Sync // diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt new file mode 100644 index 0000000000..00b1ba7ae4 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.common.block.entity.storage + +import hiiragi283.lib.transfer.fluid.HTBasicFluidTank +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.core.component.DataComponentGetter +import net.minecraft.core.component.DataComponentMap +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.fluids.SimpleFluidContent + +class HTFluidOutputBusBlockEntity(pos: BlockPos, state: BlockState) : + HTBaseTankBlockEntity(RagiumBlockEntityTypes.FLUID_OUTPUT_BUS.get(), pos, state) { + override lateinit var tank: HTBasicFluidTank + private set + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot( + HTSlotInfo.OUTPUT, + HTVariableFluidTank.output(RagiumConfig.SERVER.tankCapacity, listener) + ) + } + + // Sync // + + override fun applyImplicitComponents(components: DataComponentGetter) { + super.applyImplicitComponents(components) + components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + } + + override fun collectImplicitComponents(components: DataComponentMap.Builder) { + super.collectImplicitComponents(components) + val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) + if (!content.isEmpty) { + components.set(RagiumDataComponents.FLUID, content) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt index 72f8e12820..729e0d30d9 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt @@ -6,6 +6,8 @@ import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap @@ -17,8 +19,11 @@ class HTTankBlockEntity(pos: BlockPos, state: BlockState) : override lateinit var tank: HTBasicFluidTank private set - override fun initTank(listener: Runnable) { - tank = HTVariableFluidTank.create(RagiumConfig.SERVER.tankCapacity, listener) + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot( + HTSlotInfo.INPUT, + HTVariableFluidTank.create(RagiumConfig.SERVER.tankCapacity, listener) + ) } // Sync // diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt index 311257a9bb..60a2645939 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt @@ -4,8 +4,8 @@ import hiiragi283.lib.transfer.fluid.HTFluidTank import hiiragi283.lib.transfer.holder.HTResourceSlotHolder import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.HTConfigurableBlockEntity +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder import net.minecraft.core.BlockPos -import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.Level import net.minecraft.world.level.block.entity.BlockEntityType @@ -17,18 +17,13 @@ abstract class HTBaseTankBlockEntity(type: BlockEntityType<*>, pos: BlockPos, st HTConfigurableBlockEntity(type, pos, state) { abstract val tank: HTFluidTank - override fun createFluidHandler(listener: Runnable): HTResourceSlotHolder { - initTank(listener) - return object : HTResourceSlotHolder { - override fun getSlots(side: Direction?): List = listOf(tank) - - override fun canInsert(side: Direction?): Boolean = true - - override fun canExtract(side: Direction?): Boolean = true - } + final override fun createFluidHandler(listener: Runnable): HTResourceSlotHolder? { + val builder: HTBasicFluidTankHolder.Builder = HTBasicFluidTankHolder.builder(this) + createFluidTanks(builder, listener) + return builder.build() } - protected abstract fun initTank(listener: Runnable) + protected open fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) {} override fun markDirtyComparator() { level?.updateNeighbourForOutputSignal(blockPos, blockState.block) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt index 7138717eb7..545c811975 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt @@ -1,46 +1,19 @@ package hiiragi283.ragium.common.block.storage import hiiragi283.lib.registry.HTDeferredBlockEntityType -import hiiragi283.ragium.common.block.HTBasicEntityBlock +import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock import net.minecraft.core.BlockPos -import net.minecraft.world.InteractionHand -import net.minecraft.world.InteractionResult -import net.minecraft.world.entity.player.Player -import net.minecraft.world.item.ItemStack import net.minecraft.world.level.BlockGetter -import net.minecraft.world.level.Level import net.minecraft.world.level.block.state.BlockState -import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape -import net.neoforged.neoforge.transfer.fluid.FluidUtil -class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTBasicEntityBlock(type, properties) { +class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTFluidBusBlock(type, properties) { companion object { @JvmField val SHAPE: VoxelShape = box(2.0, 0.0, 2.0, 14.0, 16.0, 14.0) } - override fun useItemOn( - itemStack: ItemStack, - state: BlockState, - level: Level, - pos: BlockPos, - player: Player, - hand: InteractionHand, - hitResult: BlockHitResult - ): InteractionResult { - val result: InteractionResult = super.useItemOn(itemStack, state, level, pos, player, hand, hitResult) - if (itemStack.isEmpty) return result - if (!player.isShiftKeyDown) { - val moved: Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) - if (moved) { - return InteractionResult.SUCCESS - } - } - return result - } - override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape = SHAPE } diff --git a/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt b/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt deleted file mode 100644 index fff47b235d..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt +++ /dev/null @@ -1,9 +0,0 @@ -package hiiragi283.ragium.common.data.oreSlurry - -import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess -import hiiragi283.ragium.common.fluid.RagiumFluids - -class RagiumOreSlurryFluidAccess : HTOreSlurryFluidAccess { - override val fluidContent: HTFluidContent get() = RagiumFluids.ORE_SLURRY -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt deleted file mode 100644 index a37302eb11..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt +++ /dev/null @@ -1,15 +0,0 @@ -package hiiragi283.ragium.common.fluid - -import hiiragi283.lib.fluid.HTFluidType -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import net.minecraft.network.chat.Component -import net.minecraft.world.item.ItemStack -import net.neoforged.neoforge.fluids.FluidStack - -class HTOreSlurryFluidType(properties: Properties) : HTFluidType(properties) { - override fun getDescription(stack: FluidStack): Component = - HTOreSlurryDataHelper.getTitle(stack) ?: super.getDescription(stack) - - override fun getBucket(stack: FluidStack): ItemStack = - HTOreSlurryDataHelper.createBucket(stack) ?: super.getBucket(stack) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index f8be09857c..ffebf83fff 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -8,7 +8,6 @@ import hiiragi283.lib.resource.toId import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.util.Identity import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.common.item.HTOreSlurryBucketItem import hiiragi283.ragium.common.item.HTPotionBucketItem import hiiragi283.ragium.common.item.component.RagiumConsumables import net.minecraft.core.component.DataComponents @@ -28,7 +27,6 @@ data object RagiumFluids { @JvmStatic fun register(eventBus: IEventBus) { - REGISTER.addAlias("calcium_hydroxide_solution", "sodium_hydroxide_solution") REGISTER.addAlias(RagiumAPI.id("molten_blaze"), vanillaId("lava")) REGISTER.addAlias("creosote", "coal_tar") REGISTER.addAlias("chloride", "chlorine") @@ -130,6 +128,9 @@ data object RagiumFluids { val HYDROGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("hydrogen") { properties = gaseous() } // 3rd + @JvmField + val NITROGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("nitrogen") { properties = gaseous() } + @JvmField val OXYGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("oxygen") { properties = gaseous() } @@ -140,6 +141,9 @@ data object RagiumFluids { // Chemical // // C + @JvmField + val CARBON_DIOXIDE: HTFluidContent.Virtual = REGISTER.registerVirtual("carbon_dioxide") { properties = gaseous() } + @JvmField val WOOD_TAR: HTFluidContent.Virtual = REGISTER.registerVirtual("wood_tar") { properties = liquid() @@ -207,6 +211,9 @@ data object RagiumFluids { } // Na + @JvmField + val SALT_WATER: HTFluidContent.Flowing = REGISTER.registerFlowing("salt_water") { properties = liquid() } + @JvmField val NAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("sodium_hydroxide_solution") { properties = liquid() @@ -245,11 +252,9 @@ data object RagiumFluids { @JvmField val BLEACH: HTFluidContent.Virtual = REGISTER.registerVirtual("bleach") { properties = liquid() } - // Other + // Ca @JvmField - val ORE_SLURRY: HTFluidContent.Virtual = REGISTER.registerVirtual("ore_slurry") { + val CAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("calcium_hydroxide_solution") { properties = liquid() - typeFactory = ::HTOreSlurryFluidType - bucketFactory = ::HTOreSlurryBucketItem } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt deleted file mode 100644 index 8f9ae32b42..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt +++ /dev/null @@ -1,51 +0,0 @@ -package hiiragi283.ragium.common.item - -import hiiragi283.lib.item.HTSubCreativeTabContents -import hiiragi283.lib.text.Text -import hiiragi283.lib.text.translatableText -import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.common.transfer.item.HTCustomBucketItemHandler -import net.minecraft.core.Holder -import net.minecraft.network.chat.Component -import net.minecraft.world.item.CreativeModeTab -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack -import net.minecraft.world.level.material.Fluid -import net.neoforged.neoforge.transfer.access.ItemAccess -import net.neoforged.neoforge.transfer.fluid.FluidResource -import net.neoforged.neoforge.transfer.item.ItemResource - -class HTOreSlurryBucketItem(properties: Properties) : - Item(properties), - HTSubCreativeTabContents { - constructor(content: Fluid, properties: Properties) : this(properties) - - override fun getName(itemStack: ItemStack): Component { - val oreSlurryName: Text = HTOreSlurryDataHelper.getTitle(itemStack) ?: return super.getName(itemStack) - return translatableText(super.descriptionId, oreSlurryName) - } - - // HTSubCreativeTabContents // - - override fun addItems( - baseItem: Holder, - parameters: CreativeModeTab.ItemDisplayParameters, - output: CreativeModeTab.Output - ) { - parameters.holders() - .lookupOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .listElements() - .map(HTOreSlurryDataHelper::createBucket) - .forEach(output::accept) - } - - override fun shouldAddDefault(): Boolean = false - - // BucketHandler // - - class BucketHandler(itemAccess: ItemAccess) : HTCustomBucketItemHandler(itemAccess) { - override fun getResourceFrom(accessResource: ItemResource, index: Int): FluidResource = - HTOreSlurryDataHelper.createFluid(accessResource)?.let(FluidResource::of) ?: FluidResource.EMPTY - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 9d0aa3b27c..fcf7e942ca 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -9,34 +9,28 @@ import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.registry.HTDeferredItemRegister import hiiragi283.lib.registry.HTSimpleDeferredItem -import hiiragi283.lib.text.HTCommonTranslation -import hiiragi283.lib.text.Text -import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData +import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType -import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.component.RagiumToolMaterials -import net.minecraft.ChatFormatting +import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponentMap +import net.minecraft.core.component.DataComponentType +import net.minecraft.resources.ResourceKey import net.minecraft.world.item.HoneycombItem import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.item.Rarity +import net.minecraft.world.level.ItemLike import net.neoforged.bus.api.IEventBus import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent -import net.neoforged.neoforge.common.tooltip.TooltipLocation import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent -import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent import net.neoforged.neoforge.transfer.access.ItemAccess -import net.neoforged.neoforge.transfer.fluid.FluidResource -import java.util.function.Consumer data object RagiumItems { @JvmField @@ -49,7 +43,6 @@ data object RagiumItems { REGISTER.addAlias("steel_nugget", "sooty_iron_nugget") REGISTER.addAlias("coal_coke_dust", "carbon_dust") - eventBus.addListener(::registerTooltipAppenders) eventBus.addListener(::registerCapabilities) eventBus.addListener(::modifyDefaultComponents) @@ -69,10 +62,9 @@ data object RagiumItems { putAll(RagiumMaterial.Fuel.COAL_COKE, HTItemPart.TINY) putAll(RagiumMaterial.Fuel.PITCH_COKE, HTItemPart.TINY) // Mineral - for (mineral: RagiumMaterial.Mineral in RagiumMaterial.Mineral.entries) { - if (!mineral.isVanilla) { - putAll(mineral, HTItemPart.DUST) - } + for (dustLike: RagiumMaterial.DustLike in RagiumMaterial.DustLike.entries) { + if (dustLike is RagiumMaterial.Mineral && dustLike.isVanilla) continue + putAll(dustLike, HTItemPart.DUST) } // Gem putAll(RagiumMaterial.Gem.LAPIS, HTItemPart.DUST) @@ -88,19 +80,14 @@ data object RagiumItems { putAll(RagiumMaterial.Metal.COPPER, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Metal.IRON, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Metal.GOLD, HTItemPart.DUST, HTItemPart.GEAR) - putAll(RagiumMaterial.Metal.NETHERITE, HTItemPart.DUST, HTItemPart.GEAR, HTItemPart.NUGGET) putAll(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.SOOTY_IRON, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.BLACK_STEEL, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.VOID_METAL, HTItemPart.INGOT, HTItemPart.NUGGET) + // Alloy + putAll(RagiumMaterial.Alloy.NETHERITE, HTItemPart.DUST, HTItemPart.GEAR, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.VOID_METAL, HTItemPart.INGOT, HTItemPart.NUGGET) // Other - putAll(RagiumMaterial.Other.WOOD, HTItemPart.DUST, HTItemPart.GEAR) - putAll(RagiumMaterial.Other.GLASS, HTItemPart.DUST) - putAll(RagiumMaterial.Other.OBSIDIAN, HTItemPart.DUST) - putAll(RagiumMaterial.Other.PAPER, HTItemPart.DUST) - putAll(RagiumMaterial.Other.CARBON, HTItemPart.DUST) - putAll(RagiumMaterial.Other.ALUMINA, HTItemPart.DUST) - putAll(RagiumMaterial.Other.SILICON, HTItemPart.DUST) + putAll(RagiumMaterial.Other.WOOD, HTItemPart.GEAR) }, ::sortedSetOf ).flatMapTable { (material: RagiumMaterial, parts: Collection) -> @@ -111,13 +98,16 @@ data object RagiumItems { REGISTER.registerSimpleItem(part.createName(material)) { properties: Item.Properties -> when (material) { RagiumMaterial.Mineral.RAGINITE -> Rarity.EPIC - RagiumMaterial.Metal.BLACK_STEEL -> Rarity.UNCOMMON - RagiumMaterial.Metal.VOID_METAL -> Rarity.RARE + RagiumMaterial.Alloy.BLACK_STEEL -> Rarity.UNCOMMON + RagiumMaterial.Alloy.VOID_METAL -> Rarity.RARE else -> null }?.let(properties::rarity) - if (material == RagiumMaterial.Metal.NETHERITE) { + if (material == RagiumMaterial.Alloy.NETHERITE) { properties.fireResistant() } + material.chemicalKey?.let { + properties.delayedHolderComponent(RagiumDataComponents.CHEMICAL, it) + } properties } ) @@ -132,20 +122,33 @@ data object RagiumItems { @JvmField val BAMBOO_CHARCOAL: HTSimpleDeferredItem = REGISTER.registerSimpleItem("bamboo_charcoal") + @JvmField + val PARTICLE_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("particle_board") + + @JvmField + val CEMENT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cement") + + @JvmField + val MORTAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("mortar") + // Heat @JvmField - val COAL_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.COAL_COKE.materialName) + val COAL_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.COAL_COKE.materialName) { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + } @JvmField val TAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("tar") @JvmField - val PITCH_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.PITCH_COKE.materialName) + val PITCH_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.PITCH_COKE.materialName) { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + } - // Chemical @JvmField - val PARTICLE_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("particle_board") + val STICKY_BALL: HTSimpleDeferredItem = REGISTER.registerSimpleItem("sticky_ball") + // Chemical @JvmField val PLASTIC_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("plastic_plate") @@ -158,6 +161,15 @@ data object RagiumItems { @JvmField val SYNTHETIC_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_fiber") + @JvmField + val CARBON_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("carbon_fiber") + + @JvmField + val CFRP_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cfrp_plate") + + @JvmField + val ALCLAD_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("alclad_plate") + // Bio @JvmField val BEESWAX: HTSimpleDeferredItem = REGISTER.registerItem("beeswax", ::HoneycombItem) @@ -170,7 +182,9 @@ data object RagiumItems { // Electronics @JvmField - val CRUDE_SILICON: HTSimpleDeferredItem = REGISTER.registerSimpleItem("crude_silicon") + val CRUDE_SILICON: HTSimpleDeferredItem = REGISTER.registerSimpleItem("crude_silicon") { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON) + } @JvmField val SILICON_WAFER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("silicon_wafer") @@ -178,9 +192,6 @@ data object RagiumItems { @JvmField val CIRCUIT_CHIP: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_chip") - @JvmField - val CIRCUIT_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_board") - @JvmField val ELECTRIC_CIRCUIT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("electric_circuit") @@ -224,57 +235,13 @@ data object RagiumItems { @JvmField val SOOTY_IRON_TOOLS: HTToolCollection = HTToolCollection { toolType: HTToolType -> REGISTER.registerItem( - toolType.createPath(RagiumMaterial.Metal.SOOTY_IRON), + toolType.createPath(RagiumMaterial.Alloy.SOOTY_IRON), { prop: Item.Properties -> toolType.createItem(prop, RagiumToolMaterials.SOOTY_IRON, 6f, -3.1f, -2f, -1f) } ) } // Events // - @JvmStatic - private fun registerTooltipAppenders(event: RegisterTooltipAppendersEvent) { - event.registerAppender( - TooltipLocation.HEAD - ) { stack: ItemStack, _, _, _, _, builder: Consumer -> - if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender - val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender - val isCreative: Boolean = stack.`is`(RagiumTags.BlockItem.STORAGES_CREATIVE.item) - // Fluid Name - val resource: FluidResource = view.resource - when { - resource.isEmpty -> HTCommonTranslation.EMPTY.translateColored(ChatFormatting.RED) - - isCreative -> HTCommonTranslation.STORED.translateColored( - ChatFormatting.LIGHT_PURPLE, - resource.hoverName, - ChatFormatting.GRAY, - HTCommonTranslation.INFINITE - ) - - else -> HTCommonTranslation.STORED_MB.translateColored( - ChatFormatting.LIGHT_PURPLE, - resource.hoverName, - ChatFormatting.GRAY, - view.amount - ) - }.let(builder::accept) - // Tank Capacity - when (isCreative) { - true -> HTCommonTranslation.CAPACITY.translateColored( - ChatFormatting.BLUE, - ChatFormatting.GRAY, - HTCommonTranslation.INFINITE - ) - - false -> HTCommonTranslation.CAPACITY_MB.translateColored( - ChatFormatting.BLUE, - ChatFormatting.GRAY, - view.currentCapacity - ) - }.let(builder::accept) - } - } - @JvmStatic private fun registerCapabilities(event: RegisterCapabilitiesEvent) { // Fluid @@ -283,28 +250,46 @@ data object RagiumItems { { _, access: ItemAccess -> HTPotionBucketItem.BucketHandler(access) }, RagiumFluids.POTION.bucketHolder ) - event.registerItem( - HTFluidCapabilities.item, - { _, access: ItemAccess -> HTOreSlurryBucketItem.BucketHandler(access) }, - RagiumFluids.ORE_SLURRY.bucketHolder - ) // Item } @JvmStatic private fun modifyDefaultComponents(event: ModifyDefaultComponentsEvent) { - // Item - 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: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.IRON)) - } - event.modify(Items.RAW_GOLD) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.GOLD)) - } - event.modify(Items.ANCIENT_DEBRIS) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.NETHERITE_SCRAP)) + fun setHolder(item: ItemLike, type: DataComponentType>, key: ResourceKey) { + event.modify(item) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(type, provider.getOrThrow(key)) + } } + // Chemical + setHolder(Items.COAL_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + setHolder(Items.COAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + setHolder(Items.CHARCOAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + + setHolder(Items.DIAMOND_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) + setHolder(Items.DIAMOND, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) + + setHolder(Items.IRON_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + setHolder(Items.IRON_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + setHolder(Items.IRON_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + + setHolder(Items.COPPER_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + setHolder(Items.COPPER_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + setHolder(Items.COPPER_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + + setHolder(Items.GOLD_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + setHolder(Items.GOLD_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + setHolder(Items.GOLD_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + + setHolder(Items.SNOWBALL, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.SNOW_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.PACKED_ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.BLUE_ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + + setHolder(Items.AMETHYST_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + setHolder(Items.AMETHYST_SHARD, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + + setHolder(Items.QUARTZ_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + setHolder(Items.QUARTZ, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt index a04e052d4e..8cffa6999e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt @@ -2,15 +2,52 @@ package hiiragi283.ragium.common.material import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.vanillaId +import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.item.RagiumItems data object RagiumMaterialHelper { @JvmStatic - fun getFuelBase(fuel: RagiumMaterial.Fuel): HTSimpleDeferredItem = when (fuel) { + fun getBase(fuel: RagiumMaterial.Fuel): HTSimpleDeferredItem = when (fuel) { RagiumMaterial.Fuel.COAL -> HTSimpleDeferredItem(vanillaId("coal")) RagiumMaterial.Fuel.CHARCOAL -> HTSimpleDeferredItem(vanillaId("charcoal")) RagiumMaterial.Fuel.COAL_COKE -> RagiumItems.COAL_COKE RagiumMaterial.Fuel.PITCH_COKE -> RagiumItems.PITCH_COKE } + + @JvmStatic + fun getDust(dustLike: RagiumMaterial.DustLike): HTSimpleDeferredItem = when (dustLike) { + RagiumMaterial.Mineral.REDSTONE -> HTSimpleDeferredItem(vanillaId("redstone")) + RagiumMaterial.Mineral.GLOWSTONE -> HTSimpleDeferredItem(vanillaId("glowstone_dust")) + else -> RagiumItems.getOrThrow(HTItemPart.DUST, dustLike) + } + + @JvmStatic + fun getGem(gem: RagiumMaterial.Gem): HTSimpleDeferredItem = when (gem) { + RagiumMaterial.Gem.LAPIS -> HTSimpleDeferredItem(vanillaId("lapis_lazuri")) + RagiumMaterial.Gem.QUARTZ -> HTSimpleDeferredItem(vanillaId("quartz")) + RagiumMaterial.Gem.AMETHYST -> HTSimpleDeferredItem(vanillaId("amethyst_shard")) + RagiumMaterial.Gem.DIAMOND -> HTSimpleDeferredItem(vanillaId("diamond")) + RagiumMaterial.Gem.EMERALD -> HTSimpleDeferredItem(vanillaId("emerald")) + RagiumMaterial.Gem.ECHO -> HTSimpleDeferredItem(vanillaId("echo_shard")) + RagiumMaterial.Gem.PRISMARINE -> HTSimpleDeferredItem(vanillaId("prismarine_crystals")) + else -> RagiumItems.getOrThrow(HTItemPart.GEM, gem) + } + + @JvmStatic + fun getIngot(metalLike: RagiumMaterial.MetalLike): HTSimpleDeferredItem = when (metalLike) { + RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_ingot")) + RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_ingot")) + RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_ingot")) + RagiumMaterial.Alloy.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) + else -> RagiumItems.getOrThrow(HTItemPart.INGOT, metalLike) + } + + @JvmStatic + fun getNugget(metalLike: RagiumMaterial.MetalLike): HTSimpleDeferredItem = when (metalLike) { + RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_nugget")) + RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_nugget")) + RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_nugget")) + else -> RagiumItems.getOrThrow(HTItemPart.NUGGET, metalLike) + } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt deleted file mode 100644 index 1efc431272..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.ingredient.HTIngredientHelper -import hiiragi283.lib.recipe.input.HTFluidRecipeInput -import hiiragi283.lib.recipe.result.HTItemAndFluidResult -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.api.recipe.RTReactingRecipe -import net.neoforged.neoforge.common.Tags -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidType - -data object RTOreSlurryWashingRecipe : - RTReactingRecipe, - HTProgressRecipe.Simple { - override fun test(first: FluidInstance, second: FluidInstance): Boolean { - // Water - if (!second.`is`(Tags.Fluids.WATER) || second.amount() < FluidType.BUCKET_VOLUME) return false - // Ore Slurry - return HTOreSlurryDataHelper.getHolder(first) != null - } - - override fun apply(first: FluidInstance, second: FluidInstance): HTItemAndFluidResult = - HTOreSlurryDataHelper.getData(first)?.result.let(HTItemAndFluidResult.Companion::from) - - override fun getMatchingStack(first: FluidInstance, second: FluidInstance): Pair = - Pair( - HTIngredientHelper.copyWithAmount(first, FluidType.BUCKET_VOLUME), - HTIngredientHelper.copyWithAmount(second, FluidType.BUCKET_VOLUME) - ) - - override val progressData: HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt deleted file mode 100644 index e0de1baa61..0000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt +++ /dev/null @@ -1,32 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.ingredient.HTIngredientHelper -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.common.fluid.RagiumFluids -import net.minecraft.world.item.ItemInstance -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTOreSolvingRecipe : HTItemAndFluidToFluidRecipe, HTProgressRecipe.Simple { - override fun test(first: ItemInstance, second: FluidInstance): Boolean { - // Sulfuric Acid - if (!second.`is`(RagiumFluids.SULFURIC_ACID.fluidTag) || second.amount() < FluidType.BUCKET_VOLUME) return false - // Ore - return HTOreSlurryDataHelper.getHolder(first) != null - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = - HTOreSlurryDataHelper.createFluid(first) ?: FluidStack.EMPTY - - override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = Pair( - HTIngredientHelper.copyWithCount(first, 1), - HTIngredientHelper.copyWithAmount(second, FluidType.BUCKET_VOLUME) - ) - - override val progressData: HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt b/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt index 740a8452c8..d1577f355b 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt @@ -31,9 +31,13 @@ class HTVariableFluidTank( listener: Runnable?, canInsert: Predicate = HTTransferPredicates.alwaysTrue(), filter: Predicate = canInsert - ): HTVariableFluidTank = create(capacity, listener, HTTransferPredicates.notExternal(), { resource, _ -> - canInsert.test(resource) - }, filter) + ): HTVariableFluidTank = create( + capacity, + listener, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) @JvmStatic fun output(capacity: IntSupplier, listener: Runnable?): HTVariableFluidTank = diff --git a/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess b/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess deleted file mode 100644 index 9d6970eab2..0000000000 --- a/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess +++ /dev/null @@ -1 +0,0 @@ -hiiragi283.ragium.common.data.oreSlurry.RagiumOreSlurryFluidAccess diff --git a/src/main/resources/assets/ragium/textures/item/alclad_plate.png b/src/main/resources/assets/ragium/textures/item/alclad_plate.png new file mode 100644 index 0000000000..af3e7500bc Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/alclad_plate.png differ diff --git a/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png new file mode 100644 index 0000000000..71316781ac Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png differ diff --git a/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png b/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png new file mode 100644 index 0000000000..71316781ac Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png differ diff --git a/src/main/resources/assets/ragium/textures/item/carbon_fiber.png b/src/main/resources/assets/ragium/textures/item/carbon_fiber.png new file mode 100644 index 0000000000..54692e0bf7 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/carbon_fiber.png differ diff --git a/src/main/resources/assets/ragium/textures/item/cfrp_plate.png b/src/main/resources/assets/ragium/textures/item/cfrp_plate.png new file mode 100644 index 0000000000..b9dabf7ed3 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/cfrp_plate.png differ diff --git a/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png new file mode 100644 index 0000000000..71316781ac Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png differ diff --git a/src/main/resources/assets/ragium/textures/item/sticky_ball.png b/src/main/resources/assets/ragium/textures/item/sticky_ball.png new file mode 100644 index 0000000000..641e8185c1 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/sticky_ball.png differ