From 4516ecbc8c023fa3d14474314345f56bbeb9c25b Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:45:11 +0900 Subject: [PATCH 01/28] =?UTF-8?q?feat!:=20=E3=83=AC=E3=82=B7=E3=83=94?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=97=E3=80=8CAlloying=E3=80=8D=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4=20feat!:=20=E6=B6=B2=E4=BD=93=E3=80=8CMolten?= =?UTF-8?q?=20Steel=20/=20=E6=BA=B6=E8=9E=8D=E9=8B=BC=E3=80=8D=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../hiiragi283/ragium/client/RagiumClient.kt | 4 -- .../client/integration/jei/RagiumJeiPlugin.kt | 2 - .../integration/jei/RagiumJeiRecipeTypes.kt | 4 -- .../advancement/RagiumAdvancementProvider.kt | 7 +- .../data/lang/RagiumEnglishLangProvider.kt | 2 - .../data/lang/RagiumJapaneseLangProvider.kt | 2 - .../ragium/data/model/RagiumModelProvider.kt | 3 +- .../recipe/RagiumChemicalRecipeProvider.kt | 9 --- .../data/recipe/RagiumHeatRecipeProvider.kt | 67 ------------------- .../recipe/RagiumMechanicalRecipeProvider.kt | 46 +++++++++++++ .../ragium/items/molten_steel_bucket.json | 12 ---- .../ragium/items/ore_slurry_bucket.json | 2 +- .../resources/assets/ragium/lang/en_us.json | 5 -- .../resources/assets/ragium/lang/ja_jp.json | 5 -- .../data/c/tags/fluid/molten_steel.json | 5 -- .../resources/data/c/tags/item/buckets.json | 1 - .../c/tags/item/buckets/molten_steel.json | 5 -- .../ragium/advancement/alloy_smelter.json | 32 --------- .../data/ragium/advancement/black_steel.json | 2 +- .../black_steel_ingot.json | 4 +- .../chemical_machine_casing.json | 2 +- .../enchanted_golden_apple.json | 2 +- .../gilded_blackstone.json | 2 +- .../netherite_ingot.json | 2 +- .../recipe/bathing/black_steel_ingot.json | 16 ----- .../melting/molten_steel_from_sooty_iron.json | 12 ---- .../hiiragi283/ragium/api/RagiumConstants.kt | 2 - .../api/data/recipe/RagiumRecipeBuilders.kt | 11 --- .../ragium/api/recipe/RTAlloyingRecipe.kt | 28 -------- .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 - .../api/recipe/RagiumRecipeSerializers.kt | 4 -- .../ragium/api/recipe/RagiumRecipeTypes.kt | 3 - .../hiiragi283/ragium/common/RagiumCommon.kt | 1 - .../advancment/RagiumAdvancementKeys.kt | 3 - .../ragium/common/fluid/RagiumFluids.kt | 6 -- 36 files changed, 58 insertions(+), 260 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/items/molten_steel_bucket.json delete mode 100644 src/generated/resources/data/c/tags/fluid/molten_steel.json delete mode 100644 src/generated/resources/data/c/tags/item/buckets/molten_steel.json delete mode 100644 src/generated/resources/data/ragium/advancement/alloy_smelter.json rename src/generated/resources/data/ragium/recipe/{alloying => assembling}/black_steel_ingot.json (83%) rename src/generated/resources/data/ragium/recipe/{alloying => assembling}/chemical_machine_casing.json (89%) rename src/generated/resources/data/ragium/recipe/{alloying => assembling}/enchanted_golden_apple.json (89%) rename src/generated/resources/data/ragium/recipe/{alloying => assembling}/gilded_blackstone.json (89%) rename src/generated/resources/data/ragium/recipe/{alloying => assembling}/netherite_ingot.json (89%) delete mode 100644 src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json delete mode 100644 src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt diff --git a/README.md b/README.md index 480ef589f..51a26ebd9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![NeoForged Logo](./src/main/resources/icon.png) +![Ragium Logo](./src/main/resources/icon.png) Ragium ============= diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index bcb37453f..9f7fff4d3 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -175,10 +175,6 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0x66cc33)) } - register.register(RagiumFluids.MOLTEN_STEEL) { - molten() - colorTint(Color(0x999999)) - } register.register(RagiumFluids.ORE_SLURRY) { dull() 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 ddb5e311b..540afc3c3 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -112,7 +112,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.DRAINING), HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat - HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ALLOYING), HTFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTItemToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), @@ -139,7 +138,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.DRAINING, RagiumRecipeLookups.DRAINING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.FILLING, RagiumRecipeLookups.FILLING) // Heat - HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.ALLOYING, RagiumRecipeLookups.ALLOYING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.FREEZING, RagiumRecipeLookups.FREEZING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.MELTING, RagiumRecipeLookups.MELTING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PYROLYZING, RagiumRecipeLookups.PYROLYZING) 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 3c9398c3c..ca94ca545 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -44,10 +44,6 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.FILLING, ItemStack(Items.GLASS_BOTTLE)) // Heat - @JvmField - val ALLOYING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, ItemStack(Items.FURNACE)) - @JvmField val FREEZING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.FREEZING, RagiumBlocks.FREEZER) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index 550df8b35..3b1a6d213 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -107,14 +107,9 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumItems.getCasing(HTMachineType.HEAT), AdvancementType.GOAL ) - createSimple( - RagiumAdvancementKeys.ALLOY_SMELTER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, - RagiumBlocks.FREEZER - ) createSimple( RagiumAdvancementKeys.BLACK_STEEL, - RagiumAdvancementKeys.ALLOY_SMELTER, + RagiumAdvancementKeys.ASSEMBLER, HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL ) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index c8619df5c..ebf7c75d6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -79,7 +79,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "Sulfuric Acid") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") - addFluid(RagiumFluids.MOLTEN_STEEL, "Molten Steel") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") @@ -122,7 +121,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.DRAINING, "Draining") add(RagiumRecipeTypes.FILLING, "Filling") - add(RagiumRecipeTypes.ALLOYING, "Alloying") add(RagiumRecipeTypes.FREEZING, "Freezing") add(RagiumRecipeTypes.MELTING, "Melting") add(RagiumRecipeTypes.PYROLYZING, "Pyrolyzing") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 187ff7aa0..ed8795798 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -75,7 +75,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "硫酸") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") - addFluid(RagiumFluids.MOLTEN_STEEL, "溶融した鋼鉄") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") @@ -118,7 +117,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.DRAINING, "排出") add(RagiumRecipeTypes.FILLING, "封入") - add(RagiumRecipeTypes.ALLOYING, "合金") add(RagiumRecipeTypes.FREEZING, "冷凍") add(RagiumRecipeTypes.MELTING, "溶融") add(RagiumRecipeTypes.PYROLYZING, "熱分解") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index a803d9222..54ca14392 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -43,7 +43,8 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP add(RagiumFluids.COAL_TAR) add(RagiumFluids.CRUDE_OIL) add(RagiumFluids.SULFURIC_ACID) - add(RagiumFluids.MOLTEN_STEEL) + + add(RagiumFluids.ORE_SLURRY) } for (content: HTFluidContent in RagiumFluids.REGISTER.asSequence()) { // Item diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 81b2d2840..3e6ec36b4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -43,15 +43,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu recipeId suffix "_from_pulp" }.save(exporter) - // Molten Steel + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } - fluidIngredient { - +holderSet(RagiumFluids.MOLTEN_STEEL) - amount = 90 - } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } - }.save(exporter) // Molten Glass + Amethyst -> Tinted Glass RagiumRecipeBuilders.bathing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Gem.AMETHYST) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 2fe478dc9..5ecdb630c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -4,11 +4,8 @@ import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders -import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial -import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.fluid.RagiumFluids -import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponents import net.minecraft.data.PackOutput @@ -21,64 +18,10 @@ import java.util.concurrent.CompletableFuture class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { - alloying() freezing() melting() } - private fun alloying() { - // Blackstone + Gold -> Gilded Blackstone - RagiumRecipeBuilders.alloying { - primary { items { +Items.BLACKSTONE } } - secondary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) - count = 8 - } - result { +Items.GILDED_BLACKSTONE } - }.save(exporter) - // Gold + Netherite Scrap -> Netherite - RagiumRecipeBuilders.alloying { - primary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) - count = 2 - } - secondary { - items { +Items.NETHERITE_SCRAP } - count = 2 - } - result { +Items.NETHERITE_INGOT } - }.save(exporter) - // Gold Block + Apple -> Enchanted Golden Apple - RagiumRecipeBuilders.alloying { - primary { items { +Items.APPLE } } - secondary { - +holderSet(CommonTagPrefixes.STORAGE_BLOCK, RagiumMaterial.Metal.GOLD) - count = 8 - } - result { +Items.ENCHANTED_GOLDEN_APPLE } - time *= 8 - }.save(exporter) - - // Machine Casing - RagiumRecipeBuilders.alloying { - primary { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) - count = 2 - } - secondary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.getCasing(HTMachineType.CHEMICAL) } - }.save(exporter) - // Sooty Iron + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.alloying { - primary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } - secondary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) - count = 2 - } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } - }.save(exporter) - } - private fun freezing() { // Water -> Snow Block RagiumRecipeBuilders.freezing { @@ -237,16 +180,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture amount = 90 } }.save(exporter) - - // Sooty Iron -> Molten Steel - RagiumRecipeBuilders.melting { - ingredient { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } - result { - +RagiumFluids.MOLTEN_STEEL - amount = 90 - } - recipeId suffix "_from_sooty_iron" - }.save(exporter) } override fun getName(): String = "Heat Recipes" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 290dc1b71..043e862d1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -40,6 +40,15 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } private fun assembling() { + // Blackstone + Gold -> Gilded Blackstone + RagiumRecipeBuilders.assembling { + primary { items { +Items.BLACKSTONE } } + secondary { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) + count = 8 + } + result { +Items.GILDED_BLACKSTONE } + }.save(exporter) // Dirt + Leaves -> Podzol RagiumRecipeBuilders.assembling { primary { items { +Items.DIRT } } @@ -172,12 +181,49 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable result { +Items.PIGLIN_HEAD } }.save(exporter) + // Gold + Netherite Scrap -> Netherite + RagiumRecipeBuilders.assembling { + primary { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) + count = 2 + } + secondary { + items { +Items.NETHERITE_SCRAP } + count = 2 + } + result { +Items.NETHERITE_INGOT } + }.save(exporter) + // Gold Block + Apple -> Enchanted Golden Apple + RagiumRecipeBuilders.assembling { + primary { items { +Items.APPLE } } + secondary { + +holderSet(CommonTagPrefixes.STORAGE_BLOCK, RagiumMaterial.Metal.GOLD) + count = 8 + } + result { +Items.ENCHANTED_GOLDEN_APPLE } + time *= 8 + }.save(exporter) + // Machine Casing + RagiumRecipeBuilders.assembling { + primary { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) + count = 2 + } + secondary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) } + result { +RagiumItems.getCasing(HTMachineType.CHEMICAL) } + }.save(exporter) RagiumRecipeBuilders.assembling { primary { items { +RagiumItems.getCasing(HTMachineType.MECHANICAL) } } secondary { items { +Items.MAGMA_BLOCK } } result { +RagiumItems.getCasing(HTMachineType.HEAT) } }.save(exporter) + // Sooty Iron + Obsidian Dust -> Black Steel + RagiumRecipeBuilders.assembling { + primary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + secondary { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + }.save(exporter) } private fun compressing() { diff --git a/src/generated/resources/assets/ragium/items/molten_steel_bucket.json b/src/generated/resources/assets/ragium/items/molten_steel_bucket.json deleted file mode 100644 index e48f25aeb..000000000 --- a/src/generated/resources/assets/ragium/items/molten_steel_bucket.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "model": { - "type": "neoforge:fluid_container", - "apply_fluid_luminosity": false, - "fluid": "ragium:molten_steel", - "textures": { - "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid_drip", - "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/ore_slurry_bucket.json index f3a0f8805..2ba314b92 100644 --- a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json +++ b/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json @@ -5,7 +5,7 @@ "fluid": "ragium:ore_slurry", "textures": { "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid", + "fluid": "neoforge:item/mask/bucket_fluid_drip", "particle": "minecraft:item/bucket" } } diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index bd0891194..7c3d1999c 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -56,7 +56,6 @@ "block.ragium.molten_glass": "Molten Glass", "block.ragium.molten_glowstone": "Energized Glowstone", "block.ragium.molten_redstone": "Destabilized Redstone", - "block.ragium.molten_steel": "Molten Steel", "block.ragium.naphtha": "Naphtha", "block.ragium.nether_niter_ore": "Nether Niter Ore", "block.ragium.nether_sulfur_ore": "Nether Sulfur Ore", @@ -186,7 +185,6 @@ "item.ragium.molten_glass_bucket": "Molten Glass Bucket", "item.ragium.molten_glowstone_bucket": "Energized Glowstone Bucket", "item.ragium.molten_redstone_bucket": "Destabilized Redstone Bucket", - "item.ragium.molten_steel_bucket": "Molten Steel Bucket", "item.ragium.naphtha_bucket": "Naphtha Bucket", "item.ragium.netherite_dust": "Netherite Dust", "item.ragium.netherite_gear": "Netherite Gear", @@ -241,7 +239,6 @@ "ore_slurry_data.ragium.copper": "Copper Ore Slurry", "ore_slurry_data.ragium.gold": "Gold Ore Slurry", "ore_slurry_data.ragium.iron": "Iron Ore Slurry", - "recipe_type.ragium.alloying": "Alloying", "recipe_type.ragium.assembling": "Assembling", "recipe_type.ragium.bathing": "Chemical Bathing", "recipe_type.ragium.brewing": "Brewing", @@ -289,7 +286,6 @@ "tag.fluid.c.molten_glass": "Molten Glass", "tag.fluid.c.molten_glowstone": "Energized Glowstone", "tag.fluid.c.molten_redstone": "Destabilized Redstone", - "tag.fluid.c.molten_steel": "Molten Steel", "tag.fluid.c.naphtha": "Naphtha", "tag.fluid.c.nitric_acid": "Nitric Acid", "tag.fluid.c.ominous_flux": "Ominous Flux", @@ -330,7 +326,6 @@ "tag.item.c.buckets.molten_glass": "Molten Glass Bucket", "tag.item.c.buckets.molten_glowstone": "Energized Glowstone Bucket", "tag.item.c.buckets.molten_redstone": "Destabilized Redstone Bucket", - "tag.item.c.buckets.molten_steel": "Molten Steel Bucket", "tag.item.c.buckets.naphtha": "Naphtha Bucket", "tag.item.c.buckets.nitric_acid": "Nitric Acid Bucket", "tag.item.c.buckets.ominous_flux": "Ominous Flux Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 7f087bc4e..13e7e2340 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -56,7 +56,6 @@ "block.ragium.molten_glass": "溶融ガラス", "block.ragium.molten_glowstone": "活性グロウストーン", "block.ragium.molten_redstone": "励起レッドストーン", - "block.ragium.molten_steel": "溶融した鋼鉄", "block.ragium.naphtha": "ナフサ", "block.ragium.nether_niter_ore": "ネザー硝石鉱石", "block.ragium.nether_sulfur_ore": "ネザー硫黄鉱石", @@ -186,7 +185,6 @@ "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", "item.ragium.molten_glowstone_bucket": "活性グロウストーン入りバケツ", "item.ragium.molten_redstone_bucket": "励起レッドストーン入りバケツ", - "item.ragium.molten_steel_bucket": "溶融した鋼鉄入りバケツ", "item.ragium.naphtha_bucket": "ナフサ入りバケツ", "item.ragium.netherite_dust": "ネザライトの粉", "item.ragium.netherite_gear": "ネザライトの歯車", @@ -241,7 +239,6 @@ "ore_slurry_data.ragium.copper": "銅の鉱石泥", "ore_slurry_data.ragium.gold": "金の鉱石泥", "ore_slurry_data.ragium.iron": "鉄の鉱石泥", - "recipe_type.ragium.alloying": "合金", "recipe_type.ragium.assembling": "組立", "recipe_type.ragium.bathing": "化学洗浄", "recipe_type.ragium.brewing": "醸造", @@ -289,7 +286,6 @@ "tag.fluid.c.molten_glass": "溶融ガラス", "tag.fluid.c.molten_glowstone": "活性グロウストーン", "tag.fluid.c.molten_redstone": "励起レッドストーン", - "tag.fluid.c.molten_steel": "溶融した鋼鉄", "tag.fluid.c.naphtha": "ナフサ", "tag.fluid.c.nitric_acid": "硝酸", "tag.fluid.c.ominous_flux": "不吉な流動体", @@ -330,7 +326,6 @@ "tag.item.c.buckets.molten_glass": "溶融ガラス入りバケツ", "tag.item.c.buckets.molten_glowstone": "活性グロウストーン入りバケツ", "tag.item.c.buckets.molten_redstone": "励起レッドストーン入りバケツ", - "tag.item.c.buckets.molten_steel": "溶融した鋼鉄入りバケツ", "tag.item.c.buckets.naphtha": "ナフサ入りバケツ", "tag.item.c.buckets.nitric_acid": "硝酸入りバケツ", "tag.item.c.buckets.ominous_flux": "不吉な流動体入りバケツ", diff --git a/src/generated/resources/data/c/tags/fluid/molten_steel.json b/src/generated/resources/data/c/tags/fluid/molten_steel.json deleted file mode 100644 index a1f59de31..000000000 --- a/src/generated/resources/data/c/tags/fluid/molten_steel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:molten_steel" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 1e041714a..d7744c7b3 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -31,7 +31,6 @@ "#c:buckets/molten_glass", "#c:buckets/molten_glowstone", "#c:buckets/molten_redstone", - "#c:buckets/molten_steel", "#c:buckets/naphtha", "#c:buckets/nitric_acid", "#c:buckets/ominous_flux", diff --git a/src/generated/resources/data/c/tags/item/buckets/molten_steel.json b/src/generated/resources/data/c/tags/item/buckets/molten_steel.json deleted file mode 100644 index 606c58e5a..000000000 --- a/src/generated/resources/data/c/tags/item/buckets/molten_steel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:molten_steel_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/alloy_smelter.json b/src/generated/resources/data/ragium/advancement/alloy_smelter.json deleted file mode 100644 index 570344dcd..000000000 --- a/src/generated/resources/data/ragium/advancement/alloy_smelter.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "ragium:heat_machine_casing", - "criteria": { - "has_freezer": { - "conditions": { - "items": [ - { - "items": "ragium:freezer" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "description": { - "translate": "advancement.ragium.alloy_smelter.desc" - }, - "icon": { - "id": "ragium:freezer" - }, - "title": { - "translate": "advancement.ragium.alloy_smelter.title" - } - }, - "requirements": [ - [ - "has_freezer" - ] - ], - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/black_steel.json b/src/generated/resources/data/ragium/advancement/black_steel.json index 5655b9bd7..94480b5a0 100644 --- a/src/generated/resources/data/ragium/advancement/black_steel.json +++ b/src/generated/resources/data/ragium/advancement/black_steel.json @@ -1,5 +1,5 @@ { - "parent": "ragium:alloy_smelter", + "parent": "ragium:assembler", "criteria": { "has_black_steel_ingot": { "conditions": { diff --git a/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json b/src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json similarity index 83% rename from src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json rename to src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json index e4d75734e..2442839c1 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json +++ b/src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 1, "items": "#c:ingots/sooty_iron" @@ -9,7 +9,7 @@ "id": "ragium:black_steel_ingot" }, "secondary_ingredient": { - "count": 2, + "count": 1, "items": "#c:dusts/obsidian" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json b/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json rename to src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json index 9b8a67e93..bad6963ae 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 2, "items": "#c:ingots/black_steel" diff --git a/src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json b/src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json rename to src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json index 4ec655ad9..7e821c80e 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/enchanted_golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/assembling/enchanted_golden_apple.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 1, "items": "minecraft:apple" diff --git a/src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json b/src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json rename to src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json index 38de6fc16..71e9732be 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/gilded_blackstone.json +++ b/src/generated/resources/data/ragium/recipe/assembling/gilded_blackstone.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 1, "items": "minecraft:blackstone" diff --git a/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json b/src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json similarity index 89% rename from src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json rename to src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json index f47faca68..d88bdf14f 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json +++ b/src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json @@ -1,5 +1,5 @@ { - "type": "ragium:alloying", + "type": "ragium:assembling", "primary_ingredient": { "count": 2, "items": "#c:dusts/gold" diff --git a/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json b/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json deleted file mode 100644 index c5002e32e..000000000 --- a/src/generated/resources/data/ragium/recipe/bathing/black_steel_ingot.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:bathing", - "fluid_ingredient": { - "amount": 90, - "fluids": "#c:molten_steel" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/obsidian" - }, - "result": { - "count": 1, - "id": "ragium:black_steel_ingot" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json b/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json deleted file mode 100644 index 9dacf7c8d..000000000 --- a/src/generated/resources/data/ragium/recipe/melting/molten_steel_from_sooty_iron.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:melting", - "ingredient": { - "count": 1, - "items": "#c:ingots/sooty_iron" - }, - "result": { - "amount": 90, - "id": "ragium:molten_steel" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 078adae81..16fb45ea9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -15,7 +15,6 @@ data object RagiumConstants { const val CUTTING_MACHINE = "cutting_machine" // Heat - const val ALLOY_SMELTER = "alloy_smelter" const val FREEZER = "freezer" const val MELTER = "melter" const val PYROLYZER = "pyrolyzer" @@ -50,7 +49,6 @@ data object RagiumConstants { const val FILLING = "filling" // Heat - const val ALLOYING = "alloying" const val FREEZING = "freezing" const val MELTING = "melting" const val PYROLYZING = "pyrolyzing" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt index ea00402ef..8e83eea04 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt @@ -9,7 +9,6 @@ import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder import hiiragi283.lib.data.recipe.HTItemToItemAndFluidRecipeBuilder import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder 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 @@ -96,16 +95,6 @@ data object RagiumRecipeBuilders { } // Heat - @JvmStatic - inline fun alloying( - builderAction: HTDoubleItemToItemRecipeBuilder.() -> Unit - ): HTDoubleItemToItemRecipeBuilder { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - return HTDoubleItemToItemRecipeBuilder(RagiumConstants.ALLOYING, ::RTAlloyingRecipe).apply(builderAction) - } - @JvmStatic inline fun freezing( builderAction: HTFluidToRecipeBuilder.ToItem.() -> Unit diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt deleted file mode 100644 index 6bba9fa84..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt +++ /dev/null @@ -1,28 +0,0 @@ -package hiiragi283.ragium.api.recipe - -import hiiragi283.lib.recipe.HTRecipeType -import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTItemResult -import net.minecraft.world.item.crafting.RecipeInput -import net.minecraft.world.item.crafting.RecipeSerializer - -class RTAlloyingRecipe( - primary: HTItemIngredient, - secondary: HTItemIngredient, - result: HTItemResult, - progressData: HTProgressData -) : HTDoubleItemToItemRecipe.Basic(primary, secondary, result, progressData), - HTSerializableRecipe { - companion object { - @JvmField - val SERIALIZER: RecipeSerializer = - RecipeSerializer(codec(::RTAlloyingRecipe), streamCodec(::RTAlloyingRecipe)) - } - - override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ALLOYING - - override fun getType(): HTRecipeType = RagiumRecipeTypes.ALLOYING -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index fd3ba2c94..334942c87 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -51,9 +51,6 @@ data object RagiumRecipeLookups { val FILLING: HTCompoundRecipeLookup = create(RagiumConstants.FILLING) // Heat - @JvmField - val ALLOYING: HTCompoundRecipeLookup = create(RagiumConstants.ALLOYING) - @JvmField val FREEZING: HTCompoundRecipeLookup = create(RagiumConstants.FREEZING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index b37f963a4..c60f17baf 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -62,10 +62,6 @@ data object RagiumRecipeSerializers { register(RagiumConstants.FILLING, RTFillingRecipe.SERIALIZER) // Heat - @JvmField - val ALLOYING: RecipeSerializer = - register(RagiumConstants.ALLOYING, RTAlloyingRecipe.SERIALIZER) - @JvmField val FREEZING: RecipeSerializer = register(RagiumConstants.FREEZING, RTFreezingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 06bed4eda..3ae1a9175 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -48,9 +48,6 @@ data object RagiumRecipeTypes { val FILLING: HTRecipeType = create(RagiumConstants.FILLING) // Heat - @JvmField - val ALLOYING: HTRecipeType = create(RagiumConstants.ALLOYING) - @JvmField val FREEZING: HTRecipeType = create(RagiumConstants.FREEZING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 67538d846..dda71c8e0 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -80,7 +80,6 @@ internal data object RagiumCommon { RagiumRecipeLookups.DRAINING.fromRecipeType(RagiumRecipeTypes.DRAINING, identity()) RagiumRecipeLookups.FILLING.fromRecipeType(RagiumRecipeTypes.FILLING, identity()) - RagiumRecipeLookups.ALLOYING.fromRecipeType(RagiumRecipeTypes.ALLOYING, identity()) RagiumRecipeLookups.FREEZING.fromRecipeType(RagiumRecipeTypes.FREEZING, identity()) RagiumRecipeLookups.MELTING.fromRecipeType(RagiumRecipeTypes.MELTING, identity()) RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt index c11d7abdb..1b8a31cfd 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt @@ -31,9 +31,6 @@ data object RagiumAdvancementKeys { @JvmField val HEAT_MACHINE_CASING: AdvancementKey = create("heat_machine_casing") - @JvmField - val ALLOY_SMELTER: AdvancementKey = create(RagiumConstants.ALLOY_SMELTER) - @JvmField val BLACK_STEEL: AdvancementKey = create("black_steel") diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index d45aa08d1..f31f157bb 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -212,12 +212,6 @@ data object RagiumFluids { properties = liquid() } - // 5th - @JvmField - val MOLTEN_STEEL: HTFluidContent.Virtual = REGISTER.registerVirtual("molten_steel") { - properties = molten() - } - // Other @JvmField val ORE_SLURRY: HTFluidContent.Virtual = REGISTER.registerVirtual("ore_slurry") { From ea7298b9300e88895b34fa712acf3644a698f829 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 12 Sep 2026 21:05:14 +0900 Subject: [PATCH 02/28] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0=E3=80=8CBeeswax=20/=20?= =?UTF-8?q?=E8=9C=9C=E8=A0=9F=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../recipe/RagiumMechanicalRecipeProvider.kt | 8 ++++ .../recipe/RagiumVanillaRecipeProvider.kt | 9 ++++ .../assets/ragium/items/beeswax.json | 6 +++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../assets/ragium/models/item/beeswax.json | 6 +++ .../recipes/decorations/candle.json | 43 ++++++++++++++++++ .../resources/data/ragium/recipe/candle.json | 15 ++++++ .../recipe/draining/honey_from_comb.json | 16 +++++++ .../ragium/common/item/RagiumItems.kt | 3 ++ .../textures/item/ball_shape_pattern.png | Bin 290 -> 0 bytes .../assets/ragium/textures/item/beeswax.png | Bin 0 -> 346 bytes .../textures/item/blank_shape_pattern.png | Bin 148 -> 0 bytes .../textures/item/block_shape_pattern.png | Bin 286 -> 0 bytes .../textures/item/ingot_shape_pattern.png | Bin 301 -> 0 bytes .../ragium/textures/item/petrolatum.png | Bin 396 -> 0 bytes 18 files changed, 110 insertions(+) create mode 100644 src/generated/resources/assets/ragium/items/beeswax.json create mode 100644 src/generated/resources/assets/ragium/models/item/beeswax.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json create mode 100644 src/generated/resources/data/ragium/recipe/candle.json create mode 100644 src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json delete mode 100644 src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png create mode 100644 src/main/resources/assets/ragium/textures/item/beeswax.png delete mode 100644 src/main/resources/assets/ragium/textures/item/blank_shape_pattern.png delete mode 100644 src/main/resources/assets/ragium/textures/item/block_shape_pattern.png delete mode 100644 src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png delete mode 100644 src/main/resources/assets/ragium/textures/item/petrolatum.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index ebf7c75d6..b44390442 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -91,6 +91,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") + add(RagiumItems.BEESWAX, "Beeswax") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") add(RagiumItems.WITHER_STAR, "Wither Star") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index ed8795798..0e3ef46f5 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -87,6 +87,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") + add(RagiumItems.BEESWAX, "密猟") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") add(RagiumItems.WITHER_STAR, "ウィザースター") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 043e862d1..e8ca7275e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -739,6 +739,14 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable itemResult { +Items.SPONGE } fluidResult { +Fluids.WATER } }.save(exporter) + + // Honeycomb -> Beeswax + Honey + RagiumRecipeBuilders.draining { + ingredient { items { +Items.HONEYCOMB } } + itemResult { +RagiumItems.BEESWAX } + fluidResult { +RagiumFluids.HONEY } + recipeId replace "honey_from_comb" + }.save(exporter) } private fun filling() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index aeef16bff..4dd0f43b8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -148,6 +148,15 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec has(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.NITER) ) .save(output) + // Candle + shaped(RecipeCategory.DECORATIONS, Items.CANDLE) + .pattern("A") + .pattern("B") + .define('A', Tags.Items.STRINGS) + .define('B', RagiumItems.BEESWAX) + .unlockedBy(getHasName(Tags.Items.STRINGS), has(Tags.Items.STRINGS)) + .unlockedBy(getHasName(RagiumItems.BEESWAX), has(RagiumItems.BEESWAX)) + .save(output) // Bamboo Charcoal SimpleCookingRecipeBuilder.smelting( diff --git a/src/generated/resources/assets/ragium/items/beeswax.json b/src/generated/resources/assets/ragium/items/beeswax.json new file mode 100644 index 000000000..dac9f76ea --- /dev/null +++ b/src/generated/resources/assets/ragium/items/beeswax.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/beeswax" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 7c3d1999c..f9ede8c50 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -135,6 +135,7 @@ "item.ragium.arcane_machine_casing": "Machine Casing (Arcane)", "item.ragium.aromatic_compound_bucket": "Aromatic Compound Bucket", "item.ragium.bamboo_charcoal": "Bamboo Charcoal", + "item.ragium.beeswax": "Beeswax", "item.ragium.bio_machine_casing": "Machine Casing (Bio)", "item.ragium.black_dye_bucket": "Black Dye Bucket", "item.ragium.black_steel_ingot": "Black Steel Ingot", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 13e7e2340..a4c4ae9eb 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -135,6 +135,7 @@ "item.ragium.arcane_machine_casing": "マシンケーシング (神秘)", "item.ragium.aromatic_compound_bucket": "芳香族化合物入りバケツ", "item.ragium.bamboo_charcoal": "竹炭", + "item.ragium.beeswax": "密猟", "item.ragium.bio_machine_casing": "マシンケーシング (生体)", "item.ragium.black_dye_bucket": "黒色の染料入りバケツ", "item.ragium.black_steel_ingot": "黒鋼インゴット", diff --git a/src/generated/resources/assets/ragium/models/item/beeswax.json b/src/generated/resources/assets/ragium/models/item/beeswax.json new file mode 100644 index 000000000..5ff5a6922 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/beeswax.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/beeswax" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json new file mode 100644 index 000000000..ffb69fd48 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/candle.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_beeswax": { + "conditions": { + "items": [ + { + "items": "ragium:beeswax" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_strings": { + "conditions": { + "items": [ + { + "items": "#c:strings" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:candle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_strings", + "has_beeswax" + ] + ], + "rewards": { + "recipes": [ + "minecraft:candle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/candle.json b/src/generated/resources/data/ragium/recipe/candle.json new file mode 100644 index 000000000..44b34925f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/candle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:strings", + "B": "ragium:beeswax" + }, + "pattern": [ + "A", + "B" + ], + "result": { + "id": "minecraft:candle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json b/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json new file mode 100644 index 000000000..9ad75d7d9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/draining/honey_from_comb.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:draining", + "fluid_result": { + "amount": 1000, + "id": "ragium:honey" + }, + "ingredient": { + "count": 1, + "items": "minecraft:honeycomb" + }, + "item_result": { + "count": 1, + "id": "ragium:beeswax" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 94ecfbc42..21ecdde27 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -13,6 +13,7 @@ import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.item.component.RagiumToolMaterials +import net.minecraft.world.item.HoneycombItem import net.minecraft.world.item.Item import net.minecraft.world.item.Rarity import net.neoforged.bus.api.IEventBus @@ -122,6 +123,8 @@ data object RagiumItems { val SYNTHETIC_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_fiber") // Bio + @JvmField + val BEESWAX: HTSimpleDeferredItem = REGISTER.registerItem("beeswax", ::HoneycombItem) // Electronics diff --git a/src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/ball_shape_pattern.png deleted file mode 100644 index 102146c30f202d43f0b7b63df39c94f382f0bb57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`*F9YvLn;{0OkT)$$UwyP{V!#W zBQl&)y${p_625Cj1k^C+N%=O-KG1OZBWH5D=k(o;TlO>KKtWUqaf zdFFfRiah?8k#!UN)rg{#RD3$>wqcGZpQ*%)zYHxmwnV4T6nf-tAD{mO9B0D{e7fw{8(>g$#+3lhuOUeQ0!3>e&V*4-^zeG7h5(5E#D584)~(pc7)by`9Kso3&f0!&#s13<%B$Z227rkQ zFmo;rM$nDscH0mZ;RXyZYvUFbZyG~vL}z{B4FOCb2>}=ZGXgTe~DWM4f36?FB diff --git a/src/main/resources/assets/ragium/textures/item/block_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/block_shape_pattern.png deleted file mode 100644 index 699dfcdd80358c3989e5ae837e0dfe93bd4d0d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mpxq^Ln;{GTvl9n$U&s_p||;` zE5fBJ8757>3l3}&5fah3*5JI@vp`g$z+#%g2VWx=55ub_KaH0cpR>(Wo4ab>a*@Zy z=4`7&OqY8fDZTFX_rLg$XUE?Pgl@6aREj7Uu|`D%%SW9&UZ{la)tN z!in?J1IKL@I}flqa~%B>Q#rx(@Of63@H*Cy|Kv+7Pt{b4=Y&tsEBrSpQmHboFyt=akR{0Q|Icng9R* diff --git a/src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png b/src/main/resources/assets/ragium/textures/item/ingot_shape_pattern.png deleted file mode 100644 index d2fe44e85cb079a6c34c2bc7d509bf7903b90ecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k33x*Ln;`LOj6`KQS7pi|WMW^Dk-FdE86FVdQ&MBb@0KyV?`v3p{ diff --git a/src/main/resources/assets/ragium/textures/item/petrolatum.png b/src/main/resources/assets/ragium/textures/item/petrolatum.png deleted file mode 100644 index 429f978d5962f2a84891d5976171287cba0be9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)?1;H|fomhxnP)i#@u+vv*v1=q~@?gpi4NURp`L zUN3Px>sD3O!DKQ? Date: Sat, 12 Sep 2026 21:38:17 +0900 Subject: [PATCH 03/28] =?UTF-8?q?refactor:=20HTRecipeCache=20=E3=81=8C?= =?UTF-8?q?=E6=9C=80=E5=BE=8C=E3=81=AB=E4=B8=80=E8=87=B4=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=83=AC=E3=82=B7=E3=83=94=E3=82=92=EF=BC=8C=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=83=96=E3=81=AE=E5=89=8D=E5=BE=8C=E3=81=A7=E3=82=82=E5=BC=95?= =?UTF-8?q?=E3=81=8D=E7=B6=99=E3=81=92=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/RTElectrolyzingRecipeCategory.kt | 2 +- .../jei/category/RTReactingRecipeCategory.kt | 2 +- src/lib/kotlin/hiiragi283/lib/HTConstants.kt | 1 + .../jei/category/HTBasicRecipeCategory.kt | 13 +++-- .../jei/category/HTHolderRecipeCategory.kt | 2 +- .../lib/recipe/lookup/HTRecipeCache.kt | 50 +++++++++++++++---- .../entity/machine/HTBreweryBlockEntity.kt | 18 ++++++- .../entity/machine/HTMelterBlockEntity.kt | 18 ++++++- .../base/HTDoubleItemToItemBlockEntity.kt | 13 +++++ .../base/HTItemAndFluidToItemBlockEntity.kt | 13 +++++ .../base/HTItemToDoubleItemBlockEntity.kt | 13 +++++ .../machine/base/HTItemToItemBlockEntity.kt | 13 +++++ 12 files changed, 137 insertions(+), 21 deletions(-) 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 b5811322f..86c72e9f3 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt @@ -41,7 +41,7 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : val result: HTFluidResult = recipe.results[index] outputSlots[index] .add(result) - .setSlotBackground(HTBackgroundType.OUTPUT, result.amount) + .setFluidSlot(result.amount) } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt index 1e8d460cd..541fd9e25 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt @@ -43,7 +43,7 @@ class RTReactingRecipeCategory(guiHelper: IGuiHelper) : val itemOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(7), getPosition(0)) .setSlotBackground(HTBackgroundType.OUTPUT) - fluidResult?.let { fluidOutput.add(it).setSlotBackground(HTBackgroundType.OUTPUT, it.amount) } + fluidResult?.let { fluidOutput.add(it).setFluidSlot(it.amount) } itemResult?.let(itemOutput::add) } diff --git a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt index 901d483dd..2f562ecac 100644 --- a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt +++ b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt @@ -77,6 +77,7 @@ data object HTConstants { // Serialization const val ENERGY = "energy" const val TIME = "time" + const val LAST_RECIPE = "last_recipe" const val INGREDIENT = "ingredient" const val INGREDIENTS = "ingredients" diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt index 548a6ea5c..94e74d454 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt @@ -94,15 +94,20 @@ abstract class HTBasicRecipeCategory( protected fun IRecipeSlotBuilder.setSlotBackground(type: HTBackgroundType): IRecipeSlotBuilder = this.setBackground(HTJeiDrawables.getSlot(type, guiHelper), -1, -1).setSlotName(type.name) + /** + * @since 26.1.6 + */ + protected fun IRecipeSlotBuilder.setFluidSlot(capacity: Int): IRecipeSlotBuilder = + this.setFluidRenderer(fixCapacity(capacity), false, 16, 16) + protected fun IRecipeSlotBuilder.setSlotBackground(type: HTBackgroundType, capacity: Int): IRecipeSlotBuilder = this - .setBackground(HTJeiDrawables.getSlot(type, guiHelper), -1, -1) - .setSlotName(type.name) - .setFluidRenderer(fixCapacity(capacity), false, 16, 16) + .setSlotBackground(type) + .setFluidSlot(capacity) protected fun IRecipeSlotBuilder.setTankBackground(type: HTBackgroundType, capacity: Int): IRecipeSlotBuilder = this .setBackground(HTJeiDrawables.getTank(type, guiHelper), -1, -1) .setSlotName(type.name) - .setFluidRenderer(fixCapacity(capacity), false, 16, 18 * 3 - 2) + .setFluidSlot(capacity) private fun fixCapacity(capacity: Int): Long = maxOf(capacity, 1).toLong() diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt index b3466e39d..ad060845d 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt @@ -59,7 +59,7 @@ abstract class HTHolderRecipeCategory( protected open fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) {} - final override fun getIdentifier(recipe: HTRecipeHolder): Identifier? = recipe.id + final override fun getIdentifier(recipe: HTRecipeHolder): Identifier = recipe.id final override fun getCodec( codecHelper: ICodecHelper, diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt index 5d5229f7e..f1cf5a800 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt @@ -1,12 +1,20 @@ package hiiragi283.lib.recipe.lookup +import hiiragi283.lib.HTConstants import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.HTRecipePredicate -import hiiragi283.lib.recipe.id +import hiiragi283.lib.recipe.RecipeKey +import hiiragi283.lib.recipe.key import hiiragi283.lib.recipe.recipe +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap import net.minecraft.server.level.ServerLevel +import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.common.util.ValueIOSerializable /** * [HTRecipeLookup]に基づいて,取得したレシピをキャッシュするクラスです。 @@ -16,8 +24,8 @@ import net.minecraft.world.item.crafting.RecipeInput */ class HTRecipeCache>( private val lookup: HTRecipeLookup -) { - private var lastRecipe: HTRecipeHolder? = null +) : ValueIOSerializable { + private var lastRecipe: Either>? = null /** * レシピを取得します。 @@ -53,14 +61,36 @@ class HTRecipeCache>( */ fun findFirstHolder(input: INPUT, context: HTRecipeLookup.Context): HTRecipeHolder? { if (input.isEmpty) return null - if (lastRecipe != null && lastRecipe!!.recipe.matches(input)) { - return lastRecipe + // 現在のキャッシュがレシピIDのみの場合,lookupからレシピを検索して更新 + lastRecipe?.onLeft { lastKey: RecipeKey -> + lookup.getAllRecipes(context) + .firstOrNull { (key: RecipeKey, _) -> lastKey == key } + ?.let { Either.Right(it) } + .let { lastRecipe = it } } - lookup.getAllRecipes(context) - .firstOrNull { (_, recipe) -> recipe.matches(input) } - ?.let(::lastRecipe::set) - return lastRecipe + // 現在のキャッシュがレシピを保持している場合,現在の入力に一致するか判定 + lastRecipe?.onRight { holder: HTRecipeHolder -> + if (holder.recipe.matches(input)) { + return holder + } else { + lastRecipe = null + } + } + // キャッシュがない場合,すべてのレシピから検索する + return lookup.getAllRecipes(context) + .firstOrNull { (_, recipe: RECIPE) -> recipe.matches(input) } + ?.also { lastRecipe = Either.Right(it) } + } + + override fun serialize(output: ValueOutput) { + output.storeNullable(HTConstants.ID, Recipe.KEY_CODEC, getRecipeKey()) } - override fun toString(): String = "HTRecipeCache(lookup=$lookup, lastRecipe=${lastRecipe?.id})" + override fun deserialize(input: ValueInput) { + input.read(HTConstants.ID, Recipe.KEY_CODEC).ifPresent { lastRecipe = Either.Left(it) } + } + + private fun getRecipeKey(): RecipeKey? = lastRecipe?.map(HTRecipeHolder<*>::key)?.unwrap() + + override fun toString(): String = "HTRecipeCache(lookup=$lookup, lastRecipe=${getRecipeKey()})" } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt index 975bf5d0e..bacb327a1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTBreweryBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.HTConstants import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.handler.HTInputSlot import hiiragi283.lib.recipe.handler.HTOutputSlot @@ -19,17 +20,30 @@ import net.minecraft.core.BlockPos import net.minecraft.server.level.ServerLevel import net.minecraft.sounds.SoundEvents import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.transfer.transaction.Transaction class HTBreweryBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.BREWERY.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.BREWING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { - private val cache: HTRecipeCache = - HTRecipeCache(RagiumRecipeLookups.BREWING) private val inputSlot: HTInputSlot.SingleItem by lazy { HTInputSlot.SingleItem(this@HTBreweryBlockEntity.inputSlot) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt index c6bc0490d..3a7f28cc6 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMelterBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -24,16 +25,29 @@ import net.minecraft.server.level.ServerLevel import net.minecraft.sounds.SoundEvents import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.transfer.transaction.Transaction class HTMelterBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.MELTER.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.MELTING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { - private val cache: HTRecipeCache = - HTRecipeCache(RagiumRecipeLookups.MELTING) private val inputSlot: HTInputSlot.SingleItem by lazy { HTInputSlot.SingleItem(this@HTMelterBlockEntity.inputSlot) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt index 08d4e6e00..234427cb4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTDoubleItemToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -23,6 +24,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTDoubleItemToItemBlockEntity( @@ -38,6 +41,16 @@ abstract class HTDoubleItemToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt index 4c397d4b2..4c8673d47 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -24,6 +25,8 @@ import net.minecraft.server.level.ServerLevel import net.minecraft.world.item.ItemStack import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemAndFluidToItemBlockEntity( @@ -39,6 +42,16 @@ abstract class HTItemAndFluidToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt index 8fc0b5df4..b0734ffa4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -21,6 +22,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemToDoubleItemBlockEntity( @@ -36,6 +39,16 @@ abstract class HTItemToDoubleItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt index 303e9ed9a..b8526b020 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToItemBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine.base +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -21,6 +22,8 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction abstract class HTItemToItemBlockEntity( @@ -36,6 +39,16 @@ abstract class HTItemToItemBlockEntity( state: BlockState ) : this(type, HTRecipeCache(lookup), pos, state) + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { From f3f65e44c2d2e4f7e35d187a2500fd13803be40a Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 12 Sep 2026 21:53:21 +0900 Subject: [PATCH 04/28] =?UTF-8?q?feat:=20BE=E6=9C=AA=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=81=AE=E6=A9=9F=E6=A2=B0=E3=81=AE=E3=83=96=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=A0=E3=81=91=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 6 ++ .../integration/jei/RagiumJeiRecipeTypes.kt | 13 ++-- .../data/lang/RagiumEnglishLangProvider.kt | 8 +++ .../data/lang/RagiumJapaneseLangProvider.kt | 10 ++- .../ragium/blockstates/chemical_reactor.json | 34 ++++++++++ .../ragium/blockstates/electrolyzer.json | 34 ++++++++++ .../assets/ragium/blockstates/mixer.json | 34 ++++++++++ .../assets/ragium/blockstates/planter.json | 34 ++++++++++ .../assets/ragium/blockstates/pyrolyzer.json | 34 ++++++++++ .../assets/ragium/blockstates/refinery.json | 34 ++++++++++ .../assets/ragium/blockstates/scanner.json | 34 ++++++++++ .../assets/ragium/items/chemical_reactor.json | 6 ++ .../assets/ragium/items/electrolyzer.json | 6 ++ .../resources/assets/ragium/items/mixer.json | 6 ++ .../assets/ragium/items/planter.json | 6 ++ .../assets/ragium/items/pyrolyzer.json | 6 ++ .../assets/ragium/items/refinery.json | 6 ++ .../assets/ragium/items/scanner.json | 6 ++ .../resources/assets/ragium/lang/en_us.json | 7 ++ .../resources/assets/ragium/lang/ja_jp.json | 9 ++- .../ragium/models/block/chemical_reactor.json | 8 +++ .../models/block/chemical_reactor_active.json | 8 +++ .../ragium/models/block/electrolyzer.json | 8 +++ .../models/block/electrolyzer_active.json | 8 +++ .../assets/ragium/models/block/mixer.json | 8 +++ .../ragium/models/block/mixer_active.json | 8 +++ .../assets/ragium/models/block/planter.json | 8 +++ .../ragium/models/block/planter_active.json | 8 +++ .../assets/ragium/models/block/pyrolyzer.json | 8 +++ .../ragium/models/block/pyrolyzer_active.json | 8 +++ .../assets/ragium/models/block/refinery.json | 8 +++ .../ragium/models/block/refinery_active.json | 8 +++ .../assets/ragium/models/block/scanner.json | 8 +++ .../ragium/models/block/scanner_active.json | 8 +++ .../tags/block/mineable/pickaxe.json | 7 ++ .../loot_table/blocks/chemical_reactor.json | 21 ++++++ .../loot_table/blocks/electrolyzer.json | 21 ++++++ .../data/ragium/loot_table/blocks/mixer.json | 21 ++++++ .../ragium/loot_table/blocks/planter.json | 21 ++++++ .../ragium/loot_table/blocks/pyrolyzer.json | 21 ++++++ .../ragium/loot_table/blocks/refinery.json | 21 ++++++ .../ragium/loot_table/blocks/scanner.json | 21 ++++++ .../data/ragium/tags/block/machines.json | 1 + .../data/ragium/tags/block/machines/bio.json | 3 +- .../ragium/tags/block/machines/chemical.json | 5 +- .../tags/block/machines/electronics.json | 5 ++ .../data/ragium/tags/block/machines/heat.json | 4 +- .../data/ragium/tags/item/machines.json | 1 + .../data/ragium/tags/item/machines/bio.json | 3 +- .../ragium/tags/item/machines/chemical.json | 5 +- .../tags/item/machines/electronics.json | 5 ++ .../data/ragium/tags/item/machines/heat.json | 4 +- .../ragium/common/block/RagiumBlocks.kt | 65 +++++++++++++++++-- 53 files changed, 679 insertions(+), 21 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/chemical_reactor.json create mode 100644 src/generated/resources/assets/ragium/blockstates/electrolyzer.json create mode 100644 src/generated/resources/assets/ragium/blockstates/mixer.json create mode 100644 src/generated/resources/assets/ragium/blockstates/planter.json create mode 100644 src/generated/resources/assets/ragium/blockstates/pyrolyzer.json create mode 100644 src/generated/resources/assets/ragium/blockstates/refinery.json create mode 100644 src/generated/resources/assets/ragium/blockstates/scanner.json create mode 100644 src/generated/resources/assets/ragium/items/chemical_reactor.json create mode 100644 src/generated/resources/assets/ragium/items/electrolyzer.json create mode 100644 src/generated/resources/assets/ragium/items/mixer.json create mode 100644 src/generated/resources/assets/ragium/items/planter.json create mode 100644 src/generated/resources/assets/ragium/items/pyrolyzer.json create mode 100644 src/generated/resources/assets/ragium/items/refinery.json create mode 100644 src/generated/resources/assets/ragium/items/scanner.json create mode 100644 src/generated/resources/assets/ragium/models/block/chemical_reactor.json create mode 100644 src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/electrolyzer.json create mode 100644 src/generated/resources/assets/ragium/models/block/electrolyzer_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/mixer.json create mode 100644 src/generated/resources/assets/ragium/models/block/mixer_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/planter.json create mode 100644 src/generated/resources/assets/ragium/models/block/planter_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/pyrolyzer.json create mode 100644 src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/refinery.json create mode 100644 src/generated/resources/assets/ragium/models/block/refinery_active.json create mode 100644 src/generated/resources/assets/ragium/models/block/scanner.json create mode 100644 src/generated/resources/assets/ragium/models/block/scanner_active.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/mixer.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/planter.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/refinery.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/scanner.json create mode 100644 src/generated/resources/data/ragium/tags/block/machines/electronics.json create mode 100644 src/generated/resources/data/ragium/tags/item/machines/electronics.json 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 540afc3c3..886c88174 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -205,10 +205,16 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { // Heat registration.addCraftingStation(RagiumJeiRecipeTypes.FREEZING, RagiumBlocks.FREEZER) registration.addCraftingStation(RagiumJeiRecipeTypes.MELTING, RagiumBlocks.MELTER) + registration.addCraftingStation(RagiumJeiRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) + registration.addCraftingStation(RagiumJeiRecipeTypes.REFINING, RagiumBlocks.REFINERY) // Chemical registration.addCraftingStation(RagiumJeiRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) + registration.addCraftingStation(RagiumJeiRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) + registration.addCraftingStation(RagiumJeiRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + registration.addCraftingStation(RagiumJeiRecipeTypes.MIXING, RagiumBlocks.MIXER) // Bio registration.addCraftingStation(RagiumJeiRecipeTypes.BREWING, RagiumBlocks.BREWERY) + registration.addCraftingStation(RagiumJeiRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics // Arcane } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt index ca94ca545..c38d52f9b 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -13,7 +13,6 @@ import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.block.RagiumBlocks -import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items @@ -54,11 +53,11 @@ data object RagiumJeiRecipeTypes { @JvmField val PYROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumItems.COAL_COKE) + HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) @JvmField val REFINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumItems.COAL_COKE) + HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumBlocks.REFINERY) // Chemical @JvmField @@ -67,15 +66,15 @@ data object RagiumJeiRecipeTypes { @JvmField val ELECTROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, ItemStack(Items.LIGHTNING_ROD)) + HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) @JvmField val MIXING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.MIXING, ItemStack(Items.BREEZE_ROD)) + HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) @JvmField val REACTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REACTING, ItemStack(Items.GOLDEN_APPLE)) + HTJeiRecipeType(RagiumRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) // Bio @JvmField @@ -84,7 +83,7 @@ data object RagiumJeiRecipeTypes { @JvmField val PLANTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PLANTING, ItemStack(Items.FLOWER_POT)) + HTJeiRecipeType(RagiumRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index b44390442..d83ea7c15 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -45,10 +45,18 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.FREEZER, "Freezer") add(RagiumBlocks.MELTER, "Melter") + add(RagiumBlocks.PYROLYZER, "Pyrolyzer") + add(RagiumBlocks.REFINERY, "Refinery") add(RagiumBlocks.CHEMICAL_BATH, "Chemical Bath") + add(RagiumBlocks.CHEMICAL_REACTOR, "Chemical Reactor") + add(RagiumBlocks.ELECTROLYZER, "Electrolyzer") + add(RagiumBlocks.MIXER, "Mixer") add(RagiumBlocks.BREWERY, "Brewery") + add(RagiumBlocks.PLANTER, "Planter") + + add(RagiumBlocks.SCANNER, "Laser Scanner") // Fluid addFluid(RagiumFluids.HONEY, "Honey") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 0e3ef46f5..c3af7710a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -41,10 +41,18 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.FREEZER, "冷凍機") add(RagiumBlocks.MELTER, "溶融炉") + add(RagiumBlocks.PYROLYZER, "熱分解炉") + add(RagiumBlocks.REFINERY, "精製機") - add(RagiumBlocks.CHEMICAL_BATH, "化学槽") + add(RagiumBlocks.CHEMICAL_BATH, "化学浴槽") + add(RagiumBlocks.CHEMICAL_REACTOR, "化学反応槽") + add(RagiumBlocks.ELECTROLYZER, "電解機") + add(RagiumBlocks.MIXER, "混合機") add(RagiumBlocks.BREWERY, "醸造機") + add(RagiumBlocks.PLANTER, "栽培機") + + add(RagiumBlocks.SCANNER, "レーザースキャナ") // Fluid addFluid(RagiumFluids.HONEY, "ハチミツ") diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json new file mode 100644 index 000000000..597822cf9 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/chemical_reactor", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/chemical_reactor_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/chemical_reactor" + }, + "facing=north,is_active=true": { + "model": "ragium:block/chemical_reactor_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/chemical_reactor", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/chemical_reactor_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/chemical_reactor", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/chemical_reactor_active", + "y": 270 + } + } +} \ 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 new file mode 100644 index 000000000..3a9b85eae --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/electrolyzer", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/electrolyzer_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/electrolyzer" + }, + "facing=north,is_active=true": { + "model": "ragium:block/electrolyzer_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/electrolyzer", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/electrolyzer_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/electrolyzer", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/electrolyzer_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/mixer.json b/src/generated/resources/assets/ragium/blockstates/mixer.json new file mode 100644 index 000000000..bd231ffe8 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/mixer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/mixer", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/mixer_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/mixer" + }, + "facing=north,is_active=true": { + "model": "ragium:block/mixer_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/mixer", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/mixer_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/mixer", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/mixer_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/planter.json b/src/generated/resources/assets/ragium/blockstates/planter.json new file mode 100644 index 000000000..552aad4d3 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/planter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/planter", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/planter_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/planter" + }, + "facing=north,is_active=true": { + "model": "ragium:block/planter_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/planter", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/planter_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/planter", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/planter_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json new file mode 100644 index 000000000..eb7820868 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/pyrolyzer", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/pyrolyzer_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/pyrolyzer" + }, + "facing=north,is_active=true": { + "model": "ragium:block/pyrolyzer_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/pyrolyzer", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/pyrolyzer_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/pyrolyzer", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/pyrolyzer_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/refinery.json b/src/generated/resources/assets/ragium/blockstates/refinery.json new file mode 100644 index 000000000..be4c2a0ef --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/refinery.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/refinery", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/refinery_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/refinery" + }, + "facing=north,is_active=true": { + "model": "ragium:block/refinery_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/refinery", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/refinery_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/refinery", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/refinery_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/scanner.json b/src/generated/resources/assets/ragium/blockstates/scanner.json new file mode 100644 index 000000000..1ca752598 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/scanner.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/scanner", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/scanner_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/scanner" + }, + "facing=north,is_active=true": { + "model": "ragium:block/scanner_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/scanner", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/scanner_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/scanner", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/scanner_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/chemical_reactor.json b/src/generated/resources/assets/ragium/items/chemical_reactor.json new file mode 100644 index 000000000..36c18464c --- /dev/null +++ b/src/generated/resources/assets/ragium/items/chemical_reactor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/chemical_reactor" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electrolyzer.json b/src/generated/resources/assets/ragium/items/electrolyzer.json new file mode 100644 index 000000000..ef493c853 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/electrolyzer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/electrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mixer.json b/src/generated/resources/assets/ragium/items/mixer.json new file mode 100644 index 000000000..0cf738ab8 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mixer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/mixer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/planter.json b/src/generated/resources/assets/ragium/items/planter.json new file mode 100644 index 000000000..658fed017 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/planter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/planter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/pyrolyzer.json b/src/generated/resources/assets/ragium/items/pyrolyzer.json new file mode 100644 index 000000000..b7d358cd9 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/pyrolyzer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/pyrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/refinery.json b/src/generated/resources/assets/ragium/items/refinery.json new file mode 100644 index 000000000..c593b0525 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/refinery.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/refinery" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/scanner.json b/src/generated/resources/assets/ragium/items/scanner.json new file mode 100644 index 000000000..acaa85f7a --- /dev/null +++ b/src/generated/resources/assets/ragium/items/scanner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/scanner" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index f9ede8c50..3c33a1c5d 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -27,6 +27,7 @@ "block.ragium.brown_dye": "Brown Dye", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", + "block.ragium.chemical_reactor": "Chemical Reactor", "block.ragium.chloride": "Chlorine", "block.ragium.coal_coke_block": "Block of Coal Coke", "block.ragium.coal_tar": "Coal Tar", @@ -38,6 +39,7 @@ "block.ragium.deepslate_niter_ore": "Deepslate Niter Ore", "block.ragium.deepslate_sulfur_ore": "Deepslate Sulfur Ore", "block.ragium.echo_block": "Block of Echo", + "block.ragium.electrolyzer": "Electrolyzer", "block.ragium.freezer": "Freezer", "block.ragium.fuel": "Fuel", "block.ragium.gray_dye": "Gray Dye", @@ -52,6 +54,7 @@ "block.ragium.liquid_explosive": "Liquid Explosive", "block.ragium.magenta_dye": "Magenta Dye", "block.ragium.melter": "Melter", + "block.ragium.mixer": "Mixer", "block.ragium.molten_ender": "Resonant Ender", "block.ragium.molten_glass": "Molten Glass", "block.ragium.molten_glowstone": "Energized Glowstone", @@ -66,9 +69,13 @@ "block.ragium.ore_slurry": "Invalid Ore Slurry", "block.ragium.oxygen": "Oxygen", "block.ragium.pink_dye": "Pink Dye", + "block.ragium.planter": "Planter", "block.ragium.potion": "Invalid Potion", "block.ragium.purple_dye": "Purple Dye", + "block.ragium.pyrolyzer": "Pyrolyzer", "block.ragium.red_dye": "Red Dye", + "block.ragium.refinery": "Refinery", + "block.ragium.scanner": "Laser Scanner", "block.ragium.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "block.ragium.sooty_iron_block": "Block of Sooty Iron", "block.ragium.sulfur_dioxide": "Sulfur Dioxide", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index a4c4ae9eb..4508999da 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -26,7 +26,8 @@ "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", "block.ragium.charcoal_block": "木炭ブロック", - "block.ragium.chemical_bath": "化学槽", + "block.ragium.chemical_bath": "化学浴槽", + "block.ragium.chemical_reactor": "化学反応槽", "block.ragium.chloride": "塩素", "block.ragium.coal_coke_block": "石炭コークスブロック", "block.ragium.coal_tar": "石炭タール", @@ -38,6 +39,7 @@ "block.ragium.deepslate_niter_ore": "深層硝石鉱石", "block.ragium.deepslate_sulfur_ore": "深層硫黄鉱石", "block.ragium.echo_block": "残響ブロック", + "block.ragium.electrolyzer": "電解機", "block.ragium.freezer": "冷凍機", "block.ragium.fuel": "燃料油", "block.ragium.gray_dye": "灰色の染料", @@ -52,6 +54,7 @@ "block.ragium.liquid_explosive": "液体爆薬", "block.ragium.magenta_dye": "赤紫色の染料", "block.ragium.melter": "溶融炉", + "block.ragium.mixer": "混合機", "block.ragium.molten_ender": "共振エンダー", "block.ragium.molten_glass": "溶融ガラス", "block.ragium.molten_glowstone": "活性グロウストーン", @@ -66,9 +69,13 @@ "block.ragium.ore_slurry": "無効な鉱石泥", "block.ragium.oxygen": "酸素", "block.ragium.pink_dye": "桃色の染料", + "block.ragium.planter": "栽培機", "block.ragium.potion": "無効なポーション", "block.ragium.purple_dye": "紫色の染料", + "block.ragium.pyrolyzer": "熱分解炉", "block.ragium.red_dye": "赤色の染料", + "block.ragium.refinery": "精製機", + "block.ragium.scanner": "レーザースキャナ", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "block.ragium.sooty_iron_block": "煤鉄ブロック", "block.ragium.sulfur_dioxide": "二酸化硫黄", diff --git a/src/generated/resources/assets/ragium/models/block/chemical_reactor.json b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json new file mode 100644 index 000000000..0d0ce0a39 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/chemical_reactor_front", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json b/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json new file mode 100644 index 000000000..025419bab --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/chemical_reactor_front_active", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer.json b/src/generated/resources/assets/ragium/models/block/electrolyzer.json new file mode 100644 index 000000000..3882995df --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/electrolyzer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/electrolyzer_front", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json b/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json new file mode 100644 index 000000000..afa823498 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/electrolyzer_front_active", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mixer.json b/src/generated/resources/assets/ragium/models/block/mixer.json new file mode 100644 index 000000000..851ba5a6b --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/mixer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/mixer_front", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mixer_active.json b/src/generated/resources/assets/ragium/models/block/mixer_active.json new file mode 100644 index 000000000..7e936e45b --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/mixer_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/mixer_front_active", + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/planter.json b/src/generated/resources/assets/ragium/models/block/planter.json new file mode 100644 index 000000000..12b92054c --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/planter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/planter_front", + "side": "ragium:block/machine_casing/bio", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/planter_active.json b/src/generated/resources/assets/ragium/models/block/planter_active.json new file mode 100644 index 000000000..268ab9fc9 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/planter_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/planter_front_active", + "side": "ragium:block/machine_casing/bio", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/pyrolyzer.json b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json new file mode 100644 index 000000000..c66c848cf --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/pyrolyzer_front", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json b/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json new file mode 100644 index 000000000..461d37a57 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/pyrolyzer_front_active", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/refinery.json b/src/generated/resources/assets/ragium/models/block/refinery.json new file mode 100644 index 000000000..9bd9d9733 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/refinery.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/refinery_front", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/refinery_active.json b/src/generated/resources/assets/ragium/models/block/refinery_active.json new file mode 100644 index 000000000..bd128cd10 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/refinery_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/refinery_front_active", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/scanner.json b/src/generated/resources/assets/ragium/models/block/scanner.json new file mode 100644 index 000000000..a55ac9335 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/scanner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/scanner_front", + "side": "ragium:block/machine_casing/electronics", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/scanner_active.json b/src/generated/resources/assets/ragium/models/block/scanner_active.json new file mode 100644 index 000000000..4dfbfb248 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/scanner_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/scanner_front_active", + "side": "ragium:block/machine_casing/electronics", + "top": "ragium:block/machine_casing" + } +} \ 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 fa7dd2b4e..eda3107b2 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -5,6 +5,7 @@ "ragium:brewery", "ragium:charcoal_block", "ragium:chemical_bath", + "ragium:chemical_reactor", "ragium:coal_coke_block", "ragium:compressor", "ragium:crusher", @@ -12,11 +13,17 @@ "ragium:deepslate_niter_ore", "ragium:deepslate_sulfur_ore", "ragium:echo_block", + "ragium:electrolyzer", "ragium:freezer", "ragium:melter", + "ragium:mixer", "ragium:nether_niter_ore", "ragium:nether_sulfur_ore", "ragium:niter_ore", + "ragium:planter", + "ragium:pyrolyzer", + "ragium:refinery", + "ragium:scanner", "ragium:sooty_iron_block", "ragium:sulfur_ore", "ragium:void_metal_block" diff --git a/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json b/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json new file mode 100644 index 000000000..2302f1329 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/chemical_reactor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:chemical_reactor" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json b/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json new file mode 100644 index 000000000..7d0576d6d --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/electrolyzer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:electrolyzer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/mixer.json b/src/generated/resources/data/ragium/loot_table/blocks/mixer.json new file mode 100644 index 000000000..d3aef1bf4 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/mixer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:mixer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/mixer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/planter.json b/src/generated/resources/data/ragium/loot_table/blocks/planter.json new file mode 100644 index 000000000..ed02fb668 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/planter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:planter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/planter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json b/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json new file mode 100644 index 000000000..04b0390a8 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/pyrolyzer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:pyrolyzer" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/pyrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/refinery.json b/src/generated/resources/data/ragium/loot_table/blocks/refinery.json new file mode 100644 index 000000000..f1105d1f7 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/refinery.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:refinery" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/refinery" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/scanner.json b/src/generated/resources/data/ragium/loot_table/blocks/scanner.json new file mode 100644 index 000000000..c4b8410f2 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/scanner.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:scanner" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/scanner" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines.json b/src/generated/resources/data/ragium/tags/block/machines.json index cfabbf446..5e6f5515e 100644 --- a/src/generated/resources/data/ragium/tags/block/machines.json +++ b/src/generated/resources/data/ragium/tags/block/machines.json @@ -2,6 +2,7 @@ "values": [ "#ragium:machines/bio", "#ragium:machines/chemical", + "#ragium:machines/electronics", "#ragium:machines/heat", "#ragium:machines/mechanical" ] diff --git a/src/generated/resources/data/ragium/tags/block/machines/bio.json b/src/generated/resources/data/ragium/tags/block/machines/bio.json index 2e0a49caa..9d8ee3c40 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/bio.json +++ b/src/generated/resources/data/ragium/tags/block/machines/bio.json @@ -1,5 +1,6 @@ { "values": [ - "ragium:brewery" + "ragium:brewery", + "ragium:planter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/chemical.json b/src/generated/resources/data/ragium/tags/block/machines/chemical.json index 246c013bb..72f068868 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/block/machines/chemical.json @@ -1,5 +1,8 @@ { "values": [ - "ragium:chemical_bath" + "ragium:chemical_bath", + "ragium:chemical_reactor", + "ragium:electrolyzer", + "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/electronics.json b/src/generated/resources/data/ragium/tags/block/machines/electronics.json new file mode 100644 index 000000000..f2a6ce382 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/block/machines/electronics.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:scanner" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/heat.json b/src/generated/resources/data/ragium/tags/block/machines/heat.json index 3731ef46c..f8a6411bd 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/block/machines/heat.json @@ -1,6 +1,8 @@ { "values": [ "ragium:freezer", - "ragium:melter" + "ragium:melter", + "ragium:pyrolyzer", + "ragium:refinery" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines.json b/src/generated/resources/data/ragium/tags/item/machines.json index cfabbf446..5e6f5515e 100644 --- a/src/generated/resources/data/ragium/tags/item/machines.json +++ b/src/generated/resources/data/ragium/tags/item/machines.json @@ -2,6 +2,7 @@ "values": [ "#ragium:machines/bio", "#ragium:machines/chemical", + "#ragium:machines/electronics", "#ragium:machines/heat", "#ragium:machines/mechanical" ] diff --git a/src/generated/resources/data/ragium/tags/item/machines/bio.json b/src/generated/resources/data/ragium/tags/item/machines/bio.json index 2e0a49caa..9d8ee3c40 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/bio.json +++ b/src/generated/resources/data/ragium/tags/item/machines/bio.json @@ -1,5 +1,6 @@ { "values": [ - "ragium:brewery" + "ragium:brewery", + "ragium:planter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/chemical.json b/src/generated/resources/data/ragium/tags/item/machines/chemical.json index 246c013bb..72f068868 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/item/machines/chemical.json @@ -1,5 +1,8 @@ { "values": [ - "ragium:chemical_bath" + "ragium:chemical_bath", + "ragium:chemical_reactor", + "ragium:electrolyzer", + "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/electronics.json b/src/generated/resources/data/ragium/tags/item/machines/electronics.json new file mode 100644 index 000000000..f2a6ce382 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/machines/electronics.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:scanner" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/heat.json b/src/generated/resources/data/ragium/tags/item/machines/heat.json index 3731ef46c..f8a6411bd 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/item/machines/heat.json @@ -1,6 +1,8 @@ { "values": [ "ragium:freezer", - "ragium:melter" + "ragium:melter", + "ragium:pyrolyzer", + "ragium:refinery" ] } \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 6a75e095a..f97c48a8a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -12,6 +12,7 @@ import hiiragi283.lib.registry.HTDeferredBlockEntityType import hiiragi283.lib.registry.HTDeferredBlockRegister import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTOreBlockPart import hiiragi283.ragium.api.material.HTStorageBlockPart @@ -64,6 +65,16 @@ data object RagiumBlocks { { prop: BlockBehaviour.Properties -> HTMachineBlock(type, prop) } ) + @JvmStatic + private fun registerFakeMachine( + name: String, + properties: BlockBehaviour.Properties = machine() + ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( + name, + properties, + { prop: BlockBehaviour.Properties -> HTMachineBlock(RagiumBlockEntityTypes.CRUSHER, prop) } // TODO + ) + // Ingredient // @JvmField @@ -128,13 +139,16 @@ data object RagiumBlocks { // Mechanical @JvmField - val ASSEMBLER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.ASSEMBLER) + val ASSEMBLER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ASSEMBLER) @JvmField - val CRUSHER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.CRUSHER) + val CRUSHER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.CRUSHER) @JvmField - val COMPRESSOR: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.COMPRESSOR) + val COMPRESSOR: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.COMPRESSOR) @JvmField val CUTTING_MACHINE: HTBasicDeferredBlockAndItem = @@ -142,21 +156,52 @@ data object RagiumBlocks { // Heat @JvmField - val FREEZER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.FREEZER) + val FREEZER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.FREEZER) @JvmField - val MELTER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.MELTER) + val MELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.MELTER) + + @JvmField + val PYROLYZER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.PYROLYZER) + + @JvmField + val REFINERY: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.REFINERY) // Chemical @JvmField val CHEMICAL_BATH: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.CHEMICAL_BATH) + @JvmField + val CHEMICAL_REACTOR: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.CHEMICAL_REACTOR) + + @JvmField + val ELECTROLYZER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.ELECTROLYZER) + + @JvmField + val MIXER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.MIXER) + // Bio @JvmField - val BREWERY: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.BREWERY) + val BREWERY: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.BREWERY) + + @JvmField + val PLANTER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.PLANTER) // Electronics + @JvmField + val SCANNER: HTBasicDeferredBlockAndItem = + registerFakeMachine(RagiumConstants.SCANNER) + // Arcane @JvmField @@ -169,9 +214,17 @@ data object RagiumBlocks { put(HTMachineType.HEAT, FREEZER) put(HTMachineType.HEAT, MELTER) + put(HTMachineType.HEAT, PYROLYZER) + put(HTMachineType.HEAT, REFINERY) put(HTMachineType.CHEMICAL, CHEMICAL_BATH) + put(HTMachineType.CHEMICAL, CHEMICAL_REACTOR) + put(HTMachineType.CHEMICAL, ELECTROLYZER) + put(HTMachineType.CHEMICAL, MIXER) put(HTMachineType.BIO, BREWERY) + put(HTMachineType.BIO, PLANTER) + + put(HTMachineType.ELECTRONICS, SCANNER) } } From bf9b6d2fff99d0b35ab90dce20a2a6a65236fd42 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:48:57 +0900 Subject: [PATCH 05/28] =?UTF-8?q?feat!:=20=E3=82=A2=E3=82=A4=E3=83=86?= =?UTF-8?q?=E3=83=A0=E3=80=8CMachine=20Casing=E3=80=8D=E3=82=92=E3=80=8CMa?= =?UTF-8?q?chine=20Parts=E3=80=8D=E3=81=AB=E6=94=B9=E5=90=8D=20feat:=20?= =?UTF-8?q?=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF=E3=80=8CMachine=20Casing?= =?UTF-8?q?=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../advancement/RagiumAdvancementProvider.kt | 6 +-- .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../ragium/data/lang/RagiumLangProvider.kt | 10 +++-- .../ragium/data/model/RagiumModelProvider.kt | 38 +++++++++++++----- .../recipe/RagiumMechanicalRecipeProvider.kt | 6 +-- .../recipe/RagiumVanillaRecipeProvider.kt | 27 ++++++++++++- .../data/tag/RagiumBlockTagsProvider.kt | 3 ++ .../blockstates/arcane_machine_casing.json | 7 ++++ .../blockstates/bio_machine_casing.json | 7 ++++ .../blockstates/chemical_machine_casing.json | 7 ++++ .../electronics_machine_casing.json | 7 ++++ .../blockstates/heat_machine_casing.json | 7 ++++ .../ragium/blockstates/machine_casing.json | 7 ++++ .../mechanical_machine_casing.json | 7 ++++ .../ragium/items/arcane_machine_casing.json | 2 +- .../ragium/items/arcane_machine_parts.json | 6 +++ .../ragium/items/bio_machine_casing.json | 2 +- .../ragium/items/bio_machine_parts.json | 6 +++ .../ragium/items/chemical_machine_casing.json | 2 +- .../ragium/items/chemical_machine_parts.json | 6 +++ .../items/electronics_machine_casing.json | 2 +- .../items/electronics_machine_parts.json | 6 +++ .../ragium/items/heat_machine_casing.json | 2 +- .../ragium/items/heat_machine_parts.json | 6 +++ .../assets/ragium/items/machine_casing.json | 6 +++ .../items/mechanical_machine_casing.json | 2 +- .../items/mechanical_machine_parts.json | 6 +++ .../resources/assets/ragium/lang/en_us.json | 19 ++++++--- .../resources/assets/ragium/lang/ja_jp.json | 19 ++++++--- .../models/block/arcane_machine_casing.json | 7 ++++ .../models/block/bio_machine_casing.json | 7 ++++ .../models/block/chemical_machine_casing.json | 7 ++++ .../block/electronics_machine_casing.json | 7 ++++ .../models/block/heat_machine_casing.json | 7 ++++ .../ragium/models/block/machine_casing.json | 6 +++ .../block/mechanical_machine_casing.json | 7 ++++ ..._casing.json => arcane_machine_parts.json} | 2 +- ...ine_casing.json => bio_machine_parts.json} | 2 +- ...asing.json => chemical_machine_parts.json} | 2 +- .../item/electronics_machine_casing.json | 6 --- .../item/electronics_machine_parts.json | 6 +++ ...ne_casing.json => heat_machine_parts.json} | 2 +- .../item/mechanical_machine_casing.json | 6 --- .../models/item/mechanical_machine_parts.json | 6 +++ .../tags/block/mineable/pickaxe.json | 7 ++++ .../advancement/chemical_machine_casing.json | 8 ++-- .../advancement/heat_machine_casing.json | 8 ++-- .../mechanical_machine_casing.json | 8 ++-- .../decorations/arcane_machine_casing.json | 32 +++++++++++++++ .../decorations/bio_machine_casing.json | 32 +++++++++++++++ .../decorations/chemical_machine_casing.json | 32 +++++++++++++++ .../electronics_machine_casing.json | 32 +++++++++++++++ .../decorations/heat_machine_casing.json | 32 +++++++++++++++ .../machine_casing.json} | 4 +- .../mechanical_machine_casing.json | 32 +++++++++++++++ .../misc/mechanical_machine_parts.json | 32 +++++++++++++++ .../blocks/arcane_machine_casing.json | 21 ++++++++++ .../loot_table/blocks/bio_machine_casing.json | 21 ++++++++++ .../blocks/chemical_machine_casing.json | 21 ++++++++++ .../blocks/electronics_machine_casing.json | 21 ++++++++++ .../blocks/heat_machine_casing.json | 21 ++++++++++ .../loot_table/blocks/machine_casing.json | 21 ++++++++++ .../blocks/mechanical_machine_casing.json | 21 ++++++++++ .../ragium/recipe/arcane_machine_casing.json | 7 ++++ .../data/ragium/recipe/assembler.json | 2 +- ...asing.json => chemical_machine_parts.json} | 2 +- ...ne_casing.json => heat_machine_parts.json} | 4 +- .../ragium/recipe/bio_machine_casing.json | 7 ++++ .../resources/data/ragium/recipe/brewery.json | 2 +- .../data/ragium/recipe/chemical_bath.json | 2 +- .../recipe/chemical_machine_casing.json | 7 ++++ .../data/ragium/recipe/compressor.json | 2 +- .../resources/data/ragium/recipe/crusher.json | 2 +- .../data/ragium/recipe/cutting_machine.json | 2 +- .../recipe/electronics_machine_casing.json | 7 ++++ .../resources/data/ragium/recipe/freezer.json | 2 +- .../ragium/recipe/heat_machine_casing.json | 7 ++++ .../data/ragium/recipe/machine_casing.json | 17 ++++++++ .../recipe/mechanical_machine_casing.json | 14 +------ .../recipe/mechanical_machine_parts.json | 17 ++++++++ .../resources/data/ragium/recipe/melter.json | 2 +- .../ragium/common/block/RagiumBlocks.kt | 15 +++++++ .../ragium/common/item/RagiumItems.kt | 6 +-- .../{machine_casing.png => machine_parts.png} | Bin .../item/{casing => parts}/arcane.png | Bin .../textures/item/{casing => parts}/bio.png | Bin .../item/{casing => parts}/chemical.png | Bin .../item/{casing => parts}/electronics.png | Bin .../textures/item/{casing => parts}/heat.png | Bin .../item/{casing => parts}/mechanical.png | Bin 91 files changed, 749 insertions(+), 96 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/machine_casing.json create mode 100644 src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/items/arcane_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/items/bio_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/items/chemical_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/items/electronics_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/items/heat_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/items/machine_casing.json create mode 100644 src/generated/resources/assets/ragium/items/mechanical_machine_parts.json create mode 100644 src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/bio_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/heat_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json rename src/generated/resources/assets/ragium/models/item/{arcane_machine_casing.json => arcane_machine_parts.json} (60%) rename src/generated/resources/assets/ragium/models/item/{bio_machine_casing.json => bio_machine_parts.json} (61%) rename src/generated/resources/assets/ragium/models/item/{chemical_machine_casing.json => chemical_machine_parts.json} (58%) delete mode 100644 src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json rename src/generated/resources/assets/ragium/models/item/{heat_machine_casing.json => heat_machine_parts.json} (61%) delete mode 100644 src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json create mode 100644 src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json rename src/generated/resources/data/ragium/advancement/recipes/{misc/mechanical_machine_casing.json => decorations/machine_casing.json} (84%) create mode 100644 src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/arcane_machine_casing.json rename src/generated/resources/data/ragium/recipe/assembling/{chemical_machine_casing.json => chemical_machine_parts.json} (85%) rename src/generated/resources/data/ragium/recipe/assembling/{heat_machine_casing.json => heat_machine_parts.json} (71%) create mode 100644 src/generated/resources/data/ragium/recipe/bio_machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/chemical_machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/electronics_machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/heat_machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/machine_casing.json create mode 100644 src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json rename src/main/resources/assets/ragium/textures/item/{machine_casing.png => machine_parts.png} (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/arcane.png (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/bio.png (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/chemical.png (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/electronics.png (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/heat.png (100%) rename src/main/resources/assets/ragium/textures/item/{casing => parts}/mechanical.png (100%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index 3b1a6d213..1e1878660 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -87,7 +87,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur createSimple( RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, RagiumAdvancementKeys.SOOTY_IRON, - RagiumItems.getCasing(HTMachineType.MECHANICAL), + RagiumItems.getParts(HTMachineType.MECHANICAL), AdvancementType.GOAL ) createSimple( @@ -104,7 +104,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur createSimple( RagiumAdvancementKeys.HEAT_MACHINE_CASING, RagiumAdvancementKeys.ASSEMBLER, - RagiumItems.getCasing(HTMachineType.HEAT), + RagiumItems.getParts(HTMachineType.HEAT), AdvancementType.GOAL ) createSimple( @@ -127,7 +127,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur createSimple( RagiumAdvancementKeys.CHEMICAL_MACHINE_CASING, RagiumAdvancementKeys.BLACK_STEEL, - RagiumItems.getCasing(HTMachineType.CHEMICAL), + RagiumItems.getParts(HTMachineType.CHEMICAL), AdvancementType.GOAL ) createSimple( diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index d83ea7c15..ddd10f8b0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -58,6 +58,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.SCANNER, "Laser Scanner") + add(RagiumBlocks.MACHINE_CASING, "Machine Casing") // Fluid addFluid(RagiumFluids.HONEY, "Honey") add(RagiumFluids.POTION.getFluidType().descriptionId, "Invalid Potion") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index c3af7710a..321491fc4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -54,6 +54,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.SCANNER, "レーザースキャナ") + add(RagiumBlocks.MACHINE_CASING, "機械ケーシング") // Fluid addFluid(RagiumFluids.HONEY, "ハチミツ") add(RagiumFluids.POTION.getFluidType().descriptionId, "無効なポーション") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 04f1d5c5b..e7dbb6c3b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -25,6 +25,10 @@ interface RagiumLangProvider { .forEach { (part: HTBlockPart, material: RagiumMaterial, block: HTHasTranslationKey) -> provider.add(block, part, material) } + val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") + for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { + provider.add(casing, casingPattern, machineType) + } // Fluid val dyePattern = HTLangPatternProvider("%s Dye", "%sの染料") for (color: HTDefaultColor in HTDefaultColor.entries) { @@ -43,9 +47,9 @@ interface RagiumLangProvider { } provider.add(RagiumItems.COAL_COKE, RagiumMaterial.Fuel.COAL_COKE) - val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "マシンケーシング (%s)") - for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumItems.MACHINE_CASINGS) { - provider.add(casing, casingPattern, machineType) + val partsPattern = HTLangPatternProvider("Machine Parts (%s)", "機械部品 (%s)") + for ((machineType: HTLangName, parts: HTHasTranslationKey) in RagiumItems.MACHINE_PARTS) { + provider.add(parts, partsPattern, machineType) } for (toolType: HTToolType in HTToolType.entries) { provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Metal.SOOTY_IRON) diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 54ca14392..4fa0382ce 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -62,7 +62,10 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } private fun registerBlockModels(generators: BlockModelGenerators) { - RagiumBlocks.MATERIAL_BLOCKS.values.forEach { generators.createTrivialCube(it.block.getOrThrow()) } + sequence { + yieldAll(RagiumBlocks.MATERIAL_BLOCKS.values) + yield(RagiumBlocks.MACHINE_CASING) + }.forEach { generators.createTrivialCube(it.block.getOrThrow()) } // Machine for ((machineType: HTMachineType, blockItem: HTSimpleBlockItemWithKey) in RagiumBlocks.MACHINES.flatEntries) { @@ -82,6 +85,17 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP ).with(BlockModelGenerators.ROTATION_HORIZONTAL_FACING) ) } + // Decoration + for ((machineType: HTMachineType, block: HTSimpleBlockItemWithKey) in RagiumBlocks.MACHINE_CASINGS) { + generators.createSimple( + block.block.getOrThrow(), + ModelTemplates.CUBE_TOP.createBlock( + block.block, + textureMapping(machineType), + generators.modelOutput + ) + ) + } } private fun machineModel( @@ -91,12 +105,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP isActive: Boolean ): Identifier { val blockId: Identifier = block.idOrThrow.blockId - val mapping: TextureMapping = TextureMapping() - .put(TextureSlot.TOP, Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing"))) - .put( - TextureSlot.SIDE, - Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing", machineType.materialName)) - ) + val mapping: TextureMapping = textureMapping(machineType) return when (isActive) { true -> ModelTemplates.CUBE_ORIENTABLE.create( blockId.withSuffix("_active"), @@ -112,6 +121,13 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } } + private fun textureMapping(machineType: HTMachineType): TextureMapping = TextureMapping() + .put(TextureSlot.TOP, Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing"))) + .put( + TextureSlot.SIDE, + Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing", machineType.materialName)) + ) + private fun registerItemModels(generators: ItemModelGenerators) { val handheld: Set = buildSet { add(RagiumItems.BAMBOO_CHARCOAL) @@ -125,16 +141,16 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP remove(RagiumItems.MEMORY_DISC) - removeAll(RagiumItems.MACHINE_CASINGS.values) + removeAll(RagiumItems.MACHINE_PARTS.values) removeAll(handheld) }.forEach { generators.generateFlatItem(it) } generators.generateFlatItem(RagiumItems.MEMORY_DISC, template = ModelTemplates.MUSIC_DISC) - for ((machineType: HTMachineType, casing: HTSimpleDeferredItem) in RagiumItems.MACHINE_CASINGS) { + for ((machineType: HTMachineType, parts: HTSimpleDeferredItem) in RagiumItems.MACHINE_PARTS) { generators.generateFlatItem( - casing, - layer = RagiumAPI.id(HTConstants.ITEM, "casing", machineType.materialName) + parts, + layer = RagiumAPI.id(HTConstants.ITEM, "parts", machineType.materialName) ) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index e8ca7275e..0536271e8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -211,12 +211,12 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable count = 2 } secondary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.getCasing(HTMachineType.CHEMICAL) } + result { +RagiumItems.getParts(HTMachineType.CHEMICAL) } }.save(exporter) RagiumRecipeBuilders.assembling { - primary { items { +RagiumItems.getCasing(HTMachineType.MECHANICAL) } } + primary { items { +RagiumItems.getParts(HTMachineType.MECHANICAL) } } secondary { items { +Items.MAGMA_BLOCK } } - result { +RagiumItems.getCasing(HTMachineType.HEAT) } + result { +RagiumItems.getParts(HTMachineType.HEAT) } }.save(exporter) // Sooty Iron + Obsidian Dust -> Black Steel RagiumRecipeBuilders.assembling { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 4dd0f43b8..9fc065dfc 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -229,7 +229,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec private fun machine() { // Mechanical - shaped(RecipeCategory.MISC, RagiumItems.getCasing(HTMachineType.MECHANICAL), 3) + shaped(RecipeCategory.MISC, RagiumItems.getParts(HTMachineType.MECHANICAL), 3) .pattern("AAA") .pattern("BBB") .pattern("AAA") @@ -278,6 +278,29 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec } // Electronics // Arcane + + // Decoration + shaped(RecipeCategory.DECORATIONS, RagiumBlocks.MACHINE_CASING, 4) + .pattern("ABA") + .pattern("B B") + .pattern("ABA") + .define('A', CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.SOOTY_IRON) + .define('B', CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + .unlockedBy( + getHasName(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON), + has(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + ) + .save(output) + + for (block: HTSimpleDeferredBlockAndItem in RagiumBlocks.MACHINE_CASINGS.values) { + SingleItemRecipeBuilder.stonecutting( + Ingredient.of(RagiumBlocks.MACHINE_CASING), + RecipeCategory.DECORATIONS, + block, + 1 + ).unlockedBy(getHasName(RagiumBlocks.MACHINE_CASING), has(RagiumBlocks.MACHINE_CASING)) + .save(output) + } } private inline fun machine( @@ -292,7 +315,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec .pattern("BCB") .pattern("ADA") .define('A', CommonTagPrefixes.NUGGET, material) - .define('B', RagiumItems.getCasing(machineType)) + .define('B', RagiumItems.getParts(machineType)) .define('C', CommonTagPrefixes.GEAR, gear) .apply(builderAction) .save(output) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index 57b5c950d..06a6e23dd 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -26,6 +26,9 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yieldAll(RagiumBlocks.MATERIAL_ORES.values) yieldAll(RagiumBlocks.STORAGE_BLOCKS.values) yieldAll(RagiumBlocks.MACHINES.values) + yieldAll(RagiumBlocks.MACHINE_CASINGS.values) + + yield(RagiumBlocks.MACHINE_CASING) }.forEach { pickaxe.add(it.block) } } } diff --git a/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json new file mode 100644 index 000000000..3adf92fdb --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/arcane_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json new file mode 100644 index 000000000..5b39643aa --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/bio_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json new file mode 100644 index 000000000..af6a23ef6 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/chemical_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json new file mode 100644 index 000000000..6d294b37b --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/electronics_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json new file mode 100644 index 000000000..d11d6871e --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/heat_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/machine_casing.json b/src/generated/resources/assets/ragium/blockstates/machine_casing.json new file mode 100644 index 000000000..dcbd921bd --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json new file mode 100644 index 000000000..0f50a733d --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/mechanical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/mechanical_machine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/arcane_machine_casing.json b/src/generated/resources/assets/ragium/items/arcane_machine_casing.json index 8d8ee385e..eb3138c64 100644 --- a/src/generated/resources/assets/ragium/items/arcane_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/arcane_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/arcane_machine_casing" + "model": "ragium:block/arcane_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/arcane_machine_parts.json b/src/generated/resources/assets/ragium/items/arcane_machine_parts.json new file mode 100644 index 000000000..588743115 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/arcane_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/arcane_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/bio_machine_casing.json b/src/generated/resources/assets/ragium/items/bio_machine_casing.json index af3bc4270..92a8923fe 100644 --- a/src/generated/resources/assets/ragium/items/bio_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/bio_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/bio_machine_casing" + "model": "ragium:block/bio_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/bio_machine_parts.json b/src/generated/resources/assets/ragium/items/bio_machine_parts.json new file mode 100644 index 000000000..e296f1376 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/bio_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/bio_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/chemical_machine_casing.json b/src/generated/resources/assets/ragium/items/chemical_machine_casing.json index b7bfa16a0..d0ec51bf6 100644 --- a/src/generated/resources/assets/ragium/items/chemical_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/chemical_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/chemical_machine_casing" + "model": "ragium:block/chemical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/chemical_machine_parts.json b/src/generated/resources/assets/ragium/items/chemical_machine_parts.json new file mode 100644 index 000000000..b85308e5d --- /dev/null +++ b/src/generated/resources/assets/ragium/items/chemical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/chemical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electronics_machine_casing.json b/src/generated/resources/assets/ragium/items/electronics_machine_casing.json index 58b8da806..1dcb475f1 100644 --- a/src/generated/resources/assets/ragium/items/electronics_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/electronics_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/electronics_machine_casing" + "model": "ragium:block/electronics_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/electronics_machine_parts.json b/src/generated/resources/assets/ragium/items/electronics_machine_parts.json new file mode 100644 index 000000000..813fe4ec8 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/electronics_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/electronics_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/heat_machine_casing.json b/src/generated/resources/assets/ragium/items/heat_machine_casing.json index 14d0762ef..60b665ede 100644 --- a/src/generated/resources/assets/ragium/items/heat_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/heat_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/heat_machine_casing" + "model": "ragium:block/heat_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/heat_machine_parts.json b/src/generated/resources/assets/ragium/items/heat_machine_parts.json new file mode 100644 index 000000000..bc3128d17 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/heat_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/heat_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/machine_casing.json b/src/generated/resources/assets/ragium/items/machine_casing.json new file mode 100644 index 000000000..7ad55074f --- /dev/null +++ b/src/generated/resources/assets/ragium/items/machine_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json index 1097ce2e4..79ed97bf4 100644 --- a/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json +++ b/src/generated/resources/assets/ragium/items/mechanical_machine_casing.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/mechanical_machine_casing" + "model": "ragium:block/mechanical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json b/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json new file mode 100644 index 000000000..a43f8af80 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mechanical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/mechanical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 3c33a1c5d..2ebb67795 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -18,8 +18,10 @@ "advancement.ragium.sooty_iron.desc": "Craft a Sooty Iron Ingot", "advancement.ragium.sooty_iron.title": "Acquire Blackware", "block.ragium.anti_rust_oil": "Anti-rust Oil", + "block.ragium.arcane_machine_casing": "Machine Casing (Arcane)", "block.ragium.aromatic_compound": "Aromatic Compound", "block.ragium.assembler": "Assembler", + "block.ragium.bio_machine_casing": "Machine Casing (Bio)", "block.ragium.black_dye": "Black Dye", "block.ragium.black_steel_block": "Block of Black Steel", "block.ragium.blue_dye": "Blue Dye", @@ -27,6 +29,7 @@ "block.ragium.brown_dye": "Brown Dye", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", + "block.ragium.chemical_machine_casing": "Machine Casing (Chemical)", "block.ragium.chemical_reactor": "Chemical Reactor", "block.ragium.chloride": "Chlorine", "block.ragium.coal_coke_block": "Block of Coal Coke", @@ -40,10 +43,12 @@ "block.ragium.deepslate_sulfur_ore": "Deepslate Sulfur Ore", "block.ragium.echo_block": "Block of Echo", "block.ragium.electrolyzer": "Electrolyzer", + "block.ragium.electronics_machine_casing": "Machine Casing (Electronics)", "block.ragium.freezer": "Freezer", "block.ragium.fuel": "Fuel", "block.ragium.gray_dye": "Gray Dye", "block.ragium.green_dye": "Green Dye", + "block.ragium.heat_machine_casing": "Machine Casing (Heat)", "block.ragium.honey": "Honey", "block.ragium.hydrochloric_acid": "Hydrochloric Acid", "block.ragium.hydrogen": "Hydrogen", @@ -52,7 +57,9 @@ "block.ragium.light_gray_dye": "Light Gray Dye", "block.ragium.lime_dye": "Lime Dye", "block.ragium.liquid_explosive": "Liquid Explosive", + "block.ragium.machine_casing": "Machine Casing", "block.ragium.magenta_dye": "Magenta Dye", + "block.ragium.mechanical_machine_casing": "Machine Casing (Mechanical)", "block.ragium.melter": "Melter", "block.ragium.mixer": "Mixer", "block.ragium.molten_ender": "Resonant Ender", @@ -139,11 +146,11 @@ "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", "item.ragium.amethyst_dust": "Amethyst Dust", "item.ragium.anti_rust_oil_bucket": "Anti-rust Oil Bucket", - "item.ragium.arcane_machine_casing": "Machine Casing (Arcane)", + "item.ragium.arcane_machine_parts": "Machine Parts (Arcane)", "item.ragium.aromatic_compound_bucket": "Aromatic Compound Bucket", "item.ragium.bamboo_charcoal": "Bamboo Charcoal", "item.ragium.beeswax": "Beeswax", - "item.ragium.bio_machine_casing": "Machine Casing (Bio)", + "item.ragium.bio_machine_parts": "Machine Parts (Bio)", "item.ragium.black_dye_bucket": "Black Dye Bucket", "item.ragium.black_steel_ingot": "Black Steel Ingot", "item.ragium.black_steel_nugget": "Black Steel Nugget", @@ -151,7 +158,7 @@ "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", "item.ragium.charcoal_dust": "Charcoal Dust", - "item.ragium.chemical_machine_casing": "Machine Casing (Chemical)", + "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chloride_bucket": "Chlorine Bucket", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_coke_dust": "Coal Coke Dust", @@ -165,7 +172,7 @@ "item.ragium.diamond_gear": "Diamond Gear", "item.ragium.echo_dust": "Echo Dust", "item.ragium.elder_heart": "Elder Heart", - "item.ragium.electronics_machine_casing": "Machine Casing (Electronics)", + "item.ragium.electronics_machine_parts": "Machine Parts (Electronics)", "item.ragium.emerald_dust": "Emerald Dust", "item.ragium.emerald_gear": "Emerald Gear", "item.ragium.fuel_bucket": "Fuel Bucket", @@ -174,7 +181,7 @@ "item.ragium.gold_gear": "Gold Gear", "item.ragium.gray_dye_bucket": "Gray Dye Bucket", "item.ragium.green_dye_bucket": "Green Dye Bucket", - "item.ragium.heat_machine_casing": "Machine Casing (Heat)", + "item.ragium.heat_machine_parts": "Machine Parts (Heat)", "item.ragium.honey_bucket": "Honey Bucket", "item.ragium.hydrochloric_acid_bucket": "Hydrochloric Acid Bucket", "item.ragium.hydrogen_bucket": "Hydrogen Bucket", @@ -187,7 +194,7 @@ "item.ragium.lime_dye_bucket": "Lime Dye Bucket", "item.ragium.liquid_explosive_bucket": "Liquid Explosive Bucket", "item.ragium.magenta_dye_bucket": "Magenta Dye Bucket", - "item.ragium.mechanical_machine_casing": "Machine Casing (Mechanical)", + "item.ragium.mechanical_machine_parts": "Machine Parts (Mechanical)", "item.ragium.memory_disc": "Memory Disc", "item.ragium.molten_ender_bucket": "Resonant Ender Bucket", "item.ragium.molten_glass_bucket": "Molten Glass Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 4508999da..fd8b34801 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -18,8 +18,10 @@ "advancement.ragium.sooty_iron.desc": "煤鉄をつくる", "advancement.ragium.sooty_iron.title": "黒鉄(くろがね)を手に入れる", "block.ragium.anti_rust_oil": "防錆油", + "block.ragium.arcane_machine_casing": "機械筐体 (神秘)", "block.ragium.aromatic_compound": "芳香族化合物", "block.ragium.assembler": "組立機", + "block.ragium.bio_machine_casing": "機械筐体 (生体)", "block.ragium.black_dye": "黒色の染料", "block.ragium.black_steel_block": "黒鋼ブロック", "block.ragium.blue_dye": "青色の染料", @@ -27,6 +29,7 @@ "block.ragium.brown_dye": "茶色の染料", "block.ragium.charcoal_block": "木炭ブロック", "block.ragium.chemical_bath": "化学浴槽", + "block.ragium.chemical_machine_casing": "機械筐体 (化学)", "block.ragium.chemical_reactor": "化学反応槽", "block.ragium.chloride": "塩素", "block.ragium.coal_coke_block": "石炭コークスブロック", @@ -40,10 +43,12 @@ "block.ragium.deepslate_sulfur_ore": "深層硫黄鉱石", "block.ragium.echo_block": "残響ブロック", "block.ragium.electrolyzer": "電解機", + "block.ragium.electronics_machine_casing": "機械筐体 (電子)", "block.ragium.freezer": "冷凍機", "block.ragium.fuel": "燃料油", "block.ragium.gray_dye": "灰色の染料", "block.ragium.green_dye": "緑色の染料", + "block.ragium.heat_machine_casing": "機械筐体 (熱)", "block.ragium.honey": "ハチミツ", "block.ragium.hydrochloric_acid": "塩酸", "block.ragium.hydrogen": "水素", @@ -52,7 +57,9 @@ "block.ragium.light_gray_dye": "薄灰色の染料", "block.ragium.lime_dye": "黄緑色の染料", "block.ragium.liquid_explosive": "液体爆薬", + "block.ragium.machine_casing": "機械ケーシング", "block.ragium.magenta_dye": "赤紫色の染料", + "block.ragium.mechanical_machine_casing": "機械筐体 (機械加工)", "block.ragium.melter": "溶融炉", "block.ragium.mixer": "混合機", "block.ragium.molten_ender": "共振エンダー", @@ -139,11 +146,11 @@ "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", "item.ragium.amethyst_dust": "アメジストの粉", "item.ragium.anti_rust_oil_bucket": "防錆油入りバケツ", - "item.ragium.arcane_machine_casing": "マシンケーシング (神秘)", + "item.ragium.arcane_machine_parts": "機械部品 (神秘)", "item.ragium.aromatic_compound_bucket": "芳香族化合物入りバケツ", "item.ragium.bamboo_charcoal": "竹炭", "item.ragium.beeswax": "密猟", - "item.ragium.bio_machine_casing": "マシンケーシング (生体)", + "item.ragium.bio_machine_parts": "機械部品 (生体)", "item.ragium.black_dye_bucket": "黒色の染料入りバケツ", "item.ragium.black_steel_ingot": "黒鋼インゴット", "item.ragium.black_steel_nugget": "黒鋼ナゲット", @@ -151,7 +158,7 @@ "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", "item.ragium.charcoal_dust": "木炭の粉", - "item.ragium.chemical_machine_casing": "マシンケーシング (化学)", + "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chloride_bucket": "塩素入りバケツ", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_coke_dust": "石炭コークスの粉", @@ -165,7 +172,7 @@ "item.ragium.diamond_gear": "ダイヤモンドの歯車", "item.ragium.echo_dust": "残響の粉", "item.ragium.elder_heart": "エルダーの心臓", - "item.ragium.electronics_machine_casing": "マシンケーシング (電子)", + "item.ragium.electronics_machine_parts": "機械部品 (電子)", "item.ragium.emerald_dust": "エメラルドの粉", "item.ragium.emerald_gear": "エメラルドの歯車", "item.ragium.fuel_bucket": "燃料油入りバケツ", @@ -174,7 +181,7 @@ "item.ragium.gold_gear": "金の歯車", "item.ragium.gray_dye_bucket": "灰色の染料入りバケツ", "item.ragium.green_dye_bucket": "緑色の染料入りバケツ", - "item.ragium.heat_machine_casing": "マシンケーシング (熱)", + "item.ragium.heat_machine_parts": "機械部品 (熱)", "item.ragium.honey_bucket": "ハチミツ入りバケツ", "item.ragium.hydrochloric_acid_bucket": "塩酸入りバケツ", "item.ragium.hydrogen_bucket": "水素入りバケツ", @@ -187,7 +194,7 @@ "item.ragium.lime_dye_bucket": "黄緑色の染料入りバケツ", "item.ragium.liquid_explosive_bucket": "液体爆薬入りバケツ", "item.ragium.magenta_dye_bucket": "赤紫色の染料入りバケツ", - "item.ragium.mechanical_machine_casing": "マシンケーシング (機械加工)", + "item.ragium.mechanical_machine_parts": "機械部品 (機械加工)", "item.ragium.memory_disc": "メモリーディスク", "item.ragium.molten_ender_bucket": "共振エンダー入りバケツ", "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json new file mode 100644 index 000000000..290d6aecf --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/arcane", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json new file mode 100644 index 000000000..29d0c2090 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/bio", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json new file mode 100644 index 000000000..6c596352f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/chemical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json new file mode 100644 index 000000000..ed70b90a7 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/electronics", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json new file mode 100644 index 000000000..25d72fcb8 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine_casing.json b/src/generated/resources/assets/ragium/models/block/machine_casing.json new file mode 100644 index 000000000..a50e29404 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json new file mode 100644 index 000000000..9bfa607dc --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_top", + "textures": { + "side": "ragium:block/machine_casing/mechanical", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json b/src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json index 7da3dbeb6..defa500d4 100644 --- a/src/generated/resources/assets/ragium/models/item/arcane_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/arcane_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/arcane" + "layer0": "ragium:item/parts/arcane" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/bio_machine_casing.json b/src/generated/resources/assets/ragium/models/item/bio_machine_parts.json similarity index 61% rename from src/generated/resources/assets/ragium/models/item/bio_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/bio_machine_parts.json index 4d4480a59..f8696956f 100644 --- a/src/generated/resources/assets/ragium/models/item/bio_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/bio_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/bio" + "layer0": "ragium:item/parts/bio" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json b/src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json similarity index 58% rename from src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json index 2f32be0c9..b3ae7132d 100644 --- a/src/generated/resources/assets/ragium/models/item/chemical_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/chemical_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/chemical" + "layer0": "ragium:item/parts/chemical" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json b/src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json deleted file mode 100644 index 9b37b9e39..000000000 --- a/src/generated/resources/assets/ragium/models/item/electronics_machine_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/casing/electronics" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json b/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json new file mode 100644 index 000000000..bc4bffbd8 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/electronics_machine_parts.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/parts/electronics" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/heat_machine_casing.json b/src/generated/resources/assets/ragium/models/item/heat_machine_parts.json similarity index 61% rename from src/generated/resources/assets/ragium/models/item/heat_machine_casing.json rename to src/generated/resources/assets/ragium/models/item/heat_machine_parts.json index b6394e8d3..670e20297 100644 --- a/src/generated/resources/assets/ragium/models/item/heat_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/item/heat_machine_parts.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/casing/heat" + "layer0": "ragium:item/parts/heat" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json deleted file mode 100644 index e31ea9100..000000000 --- a/src/generated/resources/assets/ragium/models/item/mechanical_machine_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/casing/mechanical" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json b/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json new file mode 100644 index 000000000..3941b58b2 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/mechanical_machine_parts.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/parts/mechanical" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index eda3107b2..cecbf485c 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1,10 +1,13 @@ { "values": [ + "ragium:arcane_machine_casing", "ragium:assembler", + "ragium:bio_machine_casing", "ragium:black_steel_block", "ragium:brewery", "ragium:charcoal_block", "ragium:chemical_bath", + "ragium:chemical_machine_casing", "ragium:chemical_reactor", "ragium:coal_coke_block", "ragium:compressor", @@ -14,7 +17,11 @@ "ragium:deepslate_sulfur_ore", "ragium:echo_block", "ragium:electrolyzer", + "ragium:electronics_machine_casing", "ragium:freezer", + "ragium:heat_machine_casing", + "ragium:machine_casing", + "ragium:mechanical_machine_casing", "ragium:melter", "ragium:mixer", "ragium:nether_niter_ore", diff --git a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json b/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json index a2638d727..34a663721 100644 --- a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json @@ -1,11 +1,11 @@ { "parent": "ragium:black_steel", "criteria": { - "has_chemical_machine_casing": { + "has_chemical_machine_parts": { "conditions": { "items": [ { - "items": "ragium:chemical_machine_casing" + "items": "ragium:chemical_machine_parts" } ] }, @@ -18,7 +18,7 @@ }, "frame": "goal", "icon": { - "id": "ragium:chemical_machine_casing" + "id": "ragium:chemical_machine_parts" }, "title": { "translate": "advancement.ragium.chemical_machine_casing.title" @@ -26,7 +26,7 @@ }, "requirements": [ [ - "has_chemical_machine_casing" + "has_chemical_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json b/src/generated/resources/data/ragium/advancement/heat_machine_casing.json index 45faf046d..83c3c7474 100644 --- a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/heat_machine_casing.json @@ -1,11 +1,11 @@ { "parent": "ragium:assembler", "criteria": { - "has_heat_machine_casing": { + "has_heat_machine_parts": { "conditions": { "items": [ { - "items": "ragium:heat_machine_casing" + "items": "ragium:heat_machine_parts" } ] }, @@ -18,7 +18,7 @@ }, "frame": "goal", "icon": { - "id": "ragium:heat_machine_casing" + "id": "ragium:heat_machine_parts" }, "title": { "translate": "advancement.ragium.heat_machine_casing.title" @@ -26,7 +26,7 @@ }, "requirements": [ [ - "has_heat_machine_casing" + "has_heat_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json index f21777218..9197529ef 100644 --- a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json @@ -1,11 +1,11 @@ { "parent": "ragium:sooty_iron", "criteria": { - "has_mechanical_machine_casing": { + "has_mechanical_machine_parts": { "conditions": { "items": [ { - "items": "ragium:mechanical_machine_casing" + "items": "ragium:mechanical_machine_parts" } ] }, @@ -18,7 +18,7 @@ }, "frame": "goal", "icon": { - "id": "ragium:mechanical_machine_casing" + "id": "ragium:mechanical_machine_parts" }, "title": { "translate": "advancement.ragium.mechanical_machine_casing.title" @@ -26,7 +26,7 @@ }, "requirements": [ [ - "has_mechanical_machine_casing" + "has_mechanical_machine_parts" ] ], "sends_telemetry_event": true diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json new file mode 100644 index 000000000..2f1e0edc2 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/arcane_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:arcane_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:arcane_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json new file mode 100644 index 000000000..fea86fb60 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/bio_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:bio_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:bio_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json new file mode 100644 index 000000000..a05639134 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/chemical_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:chemical_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:chemical_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json new file mode 100644 index 000000000..607d6ebd4 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/electronics_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:electronics_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:electronics_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json new file mode 100644 index 000000000..99c93537d --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/heat_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:heat_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:heat_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json similarity index 84% rename from src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json index d798bd562..b3a217bcd 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "ragium:mechanical_machine_casing" + "recipe": "ragium:machine_casing" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "ragium:mechanical_machine_casing" + "ragium:machine_casing" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json new file mode 100644 index 000000000..5ac89f71b --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/mechanical_machine_casing.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_machine_casing": { + "conditions": { + "items": [ + { + "items": "ragium:machine_casing" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:mechanical_machine_casing" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_machine_casing" + ] + ], + "rewards": { + "recipes": [ + "ragium:mechanical_machine_casing" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json new file mode 100644 index 000000000..f4d0a60df --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_ingots/sooty_iron": { + "conditions": { + "items": [ + { + "items": "#c:ingots/sooty_iron" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:mechanical_machine_parts" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_ingots/sooty_iron" + ] + ], + "rewards": { + "recipes": [ + "ragium:mechanical_machine_parts" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json new file mode 100644 index 000000000..b387f61f7 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/arcane_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:arcane_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/arcane_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json new file mode 100644 index 000000000..906473fb8 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/bio_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:bio_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/bio_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json new file mode 100644 index 000000000..d8a5e06bd --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/chemical_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:chemical_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/chemical_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json new file mode 100644 index 000000000..174e96ccc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/electronics_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:electronics_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/electronics_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json new file mode 100644 index 000000000..1d11af9dc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/heat_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:heat_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/heat_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json new file mode 100644 index 000000000..8f1dea9ac --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json b/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json new file mode 100644 index 000000000..da3f18596 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/mechanical_machine_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:mechanical_machine_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/mechanical_machine_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json b/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json new file mode 100644 index 000000000..552004ff9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/arcane_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:arcane_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembler.json b/src/generated/resources/data/ragium/recipe/assembler.json index fe6904e0e..220454fb8 100644 --- a/src/generated/resources/data/ragium/recipe/assembler.json +++ b/src/generated/resources/data/ragium/recipe/assembler.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:crafter" }, diff --git a/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json b/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json similarity index 85% rename from src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json rename to src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json index bad6963ae..d63b82b5a 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json @@ -6,7 +6,7 @@ }, "result": { "count": 1, - "id": "ragium:chemical_machine_casing" + "id": "ragium:chemical_machine_parts" }, "secondary_ingredient": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json b/src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json similarity index 71% rename from src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json rename to src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json index 1b00475be..10776e5bd 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/heat_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/assembling/heat_machine_parts.json @@ -2,11 +2,11 @@ "type": "ragium:assembling", "primary_ingredient": { "count": 1, - "items": "ragium:mechanical_machine_casing" + "items": "ragium:mechanical_machine_parts" }, "result": { "count": 1, - "id": "ragium:heat_machine_casing" + "id": "ragium:heat_machine_parts" }, "secondary_ingredient": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/bio_machine_casing.json b/src/generated/resources/data/ragium/recipe/bio_machine_casing.json new file mode 100644 index 000000000..6ae689f25 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bio_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:bio_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewery.json b/src/generated/resources/data/ragium/recipe/brewery.json index 12f32f445..abe46a1af 100644 --- a/src/generated/resources/data/ragium/recipe/brewery.json +++ b/src/generated/resources/data/ragium/recipe/brewery.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/black_steel", - "B": "ragium:bio_machine_casing", + "B": "ragium:bio_machine_parts", "C": "#c:gears/emerald", "D": "minecraft:brewing_stand" }, diff --git a/src/generated/resources/data/ragium/recipe/chemical_bath.json b/src/generated/resources/data/ragium/recipe/chemical_bath.json index 24191a87f..ddcd93990 100644 --- a/src/generated/resources/data/ragium/recipe/chemical_bath.json +++ b/src/generated/resources/data/ragium/recipe/chemical_bath.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/black_steel", - "B": "ragium:chemical_machine_casing", + "B": "ragium:chemical_machine_parts", "C": "#c:gears/gold", "D": "minecraft:cauldron" }, diff --git a/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json b/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json new file mode 100644 index 000000000..f427afcfd --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/chemical_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:chemical_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/compressor.json b/src/generated/resources/data/ragium/recipe/compressor.json index c5a19d03b..65da642d0 100644 --- a/src/generated/resources/data/ragium/recipe/compressor.json +++ b/src/generated/resources/data/ragium/recipe/compressor.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "#minecraft:anvil" }, diff --git a/src/generated/resources/data/ragium/recipe/crusher.json b/src/generated/resources/data/ragium/recipe/crusher.json index a02f48ba1..6d685ee40 100644 --- a/src/generated/resources/data/ragium/recipe/crusher.json +++ b/src/generated/resources/data/ragium/recipe/crusher.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:grindstone" }, diff --git a/src/generated/resources/data/ragium/recipe/cutting_machine.json b/src/generated/resources/data/ragium/recipe/cutting_machine.json index b711390de..91eaf931d 100644 --- a/src/generated/resources/data/ragium/recipe/cutting_machine.json +++ b/src/generated/resources/data/ragium/recipe/cutting_machine.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:mechanical_machine_casing", + "B": "ragium:mechanical_machine_parts", "C": "#c:gears/copper", "D": "minecraft:stonecutter" }, diff --git a/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json b/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json new file mode 100644 index 000000000..273e9638d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/electronics_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:electronics_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezer.json b/src/generated/resources/data/ragium/recipe/freezer.json index 3e9dee517..67ee9cb77 100644 --- a/src/generated/resources/data/ragium/recipe/freezer.json +++ b/src/generated/resources/data/ragium/recipe/freezer.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:heat_machine_casing", + "B": "ragium:heat_machine_parts", "C": "#c:gears/iron", "D": "#c:buckets/water" }, diff --git a/src/generated/resources/data/ragium/recipe/heat_machine_casing.json b/src/generated/resources/data/ragium/recipe/heat_machine_casing.json new file mode 100644 index 000000000..be9872fc4 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/heat_machine_casing.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", + "result": { + "id": "ragium:heat_machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/machine_casing.json b/src/generated/resources/data/ragium/recipe/machine_casing.json new file mode 100644 index 000000000..1e93da5ed --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/machine_casing.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "#c:ingots/sooty_iron" + }, + "pattern": [ + "ABA", + "B B", + "ABA" + ], + "result": { + "count": 4, + "id": "ragium:machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json b/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json index f8c7968dd..546dcb5e4 100644 --- a/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/recipe/mechanical_machine_casing.json @@ -1,17 +1,7 @@ { - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": "#c:ingots/sooty_iron", - "B": "#c:dusts/redstone" - }, - "pattern": [ - "AAA", - "BBB", - "AAA" - ], + "type": "minecraft:stonecutting", + "ingredient": "ragium:machine_casing", "result": { - "count": 3, "id": "ragium:mechanical_machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json b/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json new file mode 100644 index 000000000..ec8549a7a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mechanical_machine_parts.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:ingots/sooty_iron", + "B": "#c:dusts/redstone" + }, + "pattern": [ + "AAA", + "BBB", + "AAA" + ], + "result": { + "count": 3, + "id": "ragium:mechanical_machine_parts" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melter.json b/src/generated/resources/data/ragium/recipe/melter.json index 77a6165cd..2bb3bf512 100644 --- a/src/generated/resources/data/ragium/recipe/melter.json +++ b/src/generated/resources/data/ragium/recipe/melter.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:nuggets/sooty_iron", - "B": "ragium:heat_machine_casing", + "B": "ragium:heat_machine_parts", "C": "#c:gears/iron", "D": "#c:buckets/lava" }, diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index f97c48a8a..fae72d679 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -6,6 +6,7 @@ import hiiragi283.lib.collection.buildListMultiMap import hiiragi283.lib.collection.buildSortedSetMultiMap import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.flatMapTable +import hiiragi283.lib.collection.mutableEnumMapOf import hiiragi283.lib.registry.HTBasicDeferredBlockAndItem import hiiragi283.lib.registry.HTDeferredBlockAndItemRegister import hiiragi283.lib.registry.HTDeferredBlockEntityType @@ -227,4 +228,18 @@ data object RagiumBlocks { put(HTMachineType.ELECTRONICS, SCANNER) } + + // Decoration // + + @JvmField + val MACHINE_CASING: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple("machine_casing", machine()) + + @JvmField + val MACHINE_CASINGS: Map = HTMachineType.entries + .associateWithTo(mutableEnumMapOf()) { machineType: HTMachineType -> + REGISTER.registerSimple("${machineType.materialName}_machine_casing", machine()) + } + + @JvmStatic + fun getCasing(machineType: HTMachineType): HTSimpleDeferredBlockAndItem = MACHINE_CASINGS[machineType]!! } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 21ecdde27..48be0f2c3 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -141,13 +141,13 @@ data object RagiumItems { // Parts // @JvmField - val MACHINE_CASINGS: Map = HTMachineType.entries + val MACHINE_PARTS: Map = HTMachineType.entries .associateWithTo(mutableEnumMapOf()) { machineType: HTMachineType -> - REGISTER.registerSimpleItem("${machineType.materialName}_machine_casing") + REGISTER.registerSimpleItem("${machineType.materialName}_machine_parts") } @JvmStatic - fun getCasing(machineType: HTMachineType): HTSimpleDeferredItem = MACHINE_CASINGS[machineType]!! + fun getParts(machineType: HTMachineType): HTSimpleDeferredItem = MACHINE_PARTS[machineType]!! // Mechanical diff --git a/src/main/resources/assets/ragium/textures/item/machine_casing.png b/src/main/resources/assets/ragium/textures/item/machine_parts.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/machine_casing.png rename to src/main/resources/assets/ragium/textures/item/machine_parts.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/arcane.png b/src/main/resources/assets/ragium/textures/item/parts/arcane.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/arcane.png rename to src/main/resources/assets/ragium/textures/item/parts/arcane.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/bio.png b/src/main/resources/assets/ragium/textures/item/parts/bio.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/bio.png rename to src/main/resources/assets/ragium/textures/item/parts/bio.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/chemical.png b/src/main/resources/assets/ragium/textures/item/parts/chemical.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/chemical.png rename to src/main/resources/assets/ragium/textures/item/parts/chemical.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/electronics.png b/src/main/resources/assets/ragium/textures/item/parts/electronics.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/electronics.png rename to src/main/resources/assets/ragium/textures/item/parts/electronics.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/heat.png b/src/main/resources/assets/ragium/textures/item/parts/heat.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/heat.png rename to src/main/resources/assets/ragium/textures/item/parts/heat.png diff --git a/src/main/resources/assets/ragium/textures/item/casing/mechanical.png b/src/main/resources/assets/ragium/textures/item/parts/mechanical.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/casing/mechanical.png rename to src/main/resources/assets/ragium/textures/item/parts/mechanical.png From cd2b2bf783bed0e6b71ca4ed17356586995a94fd Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:53:16 +0900 Subject: [PATCH 06/28] =?UTF-8?q?feat!:=20=E9=80=B2=E6=8D=97=E3=81=AEID?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../advancement/RagiumAdvancementProvider.kt | 16 ++++++++-------- .../data/lang/RagiumEnglishLangProvider.kt | 4 ++-- .../data/lang/RagiumJapaneseLangProvider.kt | 4 ++-- .../resources/assets/ragium/lang/en_us.json | 8 ++++---- .../resources/assets/ragium/lang/ja_jp.json | 8 ++++---- .../data/ragium/advancement/assembler.json | 2 +- .../data/ragium/advancement/chemical_bath.json | 2 +- ...e_casing.json => chemical_machine_parts.json} | 4 ++-- .../data/ragium/advancement/crusher.json | 2 +- .../data/ragium/advancement/freezer.json | 2 +- ...chine_casing.json => heat_machine_parts.json} | 4 ++-- ...casing.json => mechanical_machine_parts.json} | 4 ++-- .../data/ragium/advancement/melter.json | 2 +- .../common/advancment/RagiumAdvancementKeys.kt | 6 +++--- 14 files changed, 34 insertions(+), 34 deletions(-) rename src/generated/resources/data/ragium/advancement/{chemical_machine_casing.json => chemical_machine_parts.json} (79%) rename src/generated/resources/data/ragium/advancement/{heat_machine_casing.json => heat_machine_parts.json} (80%) rename src/generated/resources/data/ragium/advancement/{mechanical_machine_casing.json => mechanical_machine_parts.json} (79%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index 1e1878660..5d5b24274 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -85,24 +85,24 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur ) // Mechanical createSimple( - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumAdvancementKeys.SOOTY_IRON, RagiumItems.getParts(HTMachineType.MECHANICAL), AdvancementType.GOAL ) createSimple( RagiumAdvancementKeys.ASSEMBLER, - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumBlocks.ASSEMBLER ) createSimple( RagiumAdvancementKeys.CRUSHER, - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, RagiumBlocks.CRUSHER ) // Heat createSimple( - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumAdvancementKeys.ASSEMBLER, RagiumItems.getParts(HTMachineType.HEAT), AdvancementType.GOAL @@ -115,24 +115,24 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur ) createSimple( RagiumAdvancementKeys.FREEZER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumBlocks.FREEZER ) createSimple( RagiumAdvancementKeys.MELTER, - RagiumAdvancementKeys.HEAT_MACHINE_CASING, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, RagiumBlocks.MELTER ) // Chemical createSimple( - RagiumAdvancementKeys.CHEMICAL_MACHINE_CASING, + RagiumAdvancementKeys.CHEMICAL_MACHINE_PARTS, RagiumAdvancementKeys.BLACK_STEEL, RagiumItems.getParts(HTMachineType.CHEMICAL), AdvancementType.GOAL ) createSimple( RagiumAdvancementKeys.CHEMICAL_BATH, - RagiumAdvancementKeys.CHEMICAL_MACHINE_CASING, + RagiumAdvancementKeys.CHEMICAL_MACHINE_PARTS, RagiumBlocks.CHEMICAL_BATH ) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index ddd10f8b0..5a34f747a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -26,14 +26,14 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumAdvancementKeys.SOOTY_IRON, "Acquire Blackware", "Craft a Sooty Iron Ingot") add( - RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, + RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, "Mechanical Machines", "Craft a Machine Casing (Mechanical)" ) add(RagiumAdvancementKeys.ASSEMBLER, "Rava(n)gers, assemble!", "Acquire Assembler") add(RagiumAdvancementKeys.CRUSHER, "Macerator, Pulverizer, or Crusher?", "Acquire Crusher") - add(RagiumAdvancementKeys.HEAT_MACHINE_CASING, "Heat And Cool", "Craft a Machine Casing (Heat)") + add(RagiumAdvancementKeys.HEAT_MACHINE_PARTS, "Heat And Cool", "Craft a Machine Casing (Heat)") add(RagiumAdvancementKeys.BLACK_STEEL, "Black Roaring", "Craft a Black Steel Ingot") add(RagiumAdvancementKeys.FREEZER, "My power is 530,000.", "Acquire Freezer") add(RagiumAdvancementKeys.MELTER, "(S)melter(y)", "Acquire Melter") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 321491fc4..8deba136d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -25,11 +25,11 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumAdvancementKeys.ROOT, "ラギウム", "ラギウムへようこそ!") add(RagiumAdvancementKeys.SOOTY_IRON, "黒鉄(くろがね)を手に入れる", "煤鉄をつくる") - add(RagiumAdvancementKeys.MECHANICAL_MACHINE_CASING, "機械・加工・機械", "マシンケーシング(機械加工)を作る") + add(RagiumAdvancementKeys.MECHANICAL_MACHINE_PARTS, "機械・加工・機械", "マシンケーシング(機械加工)を作る") add(RagiumAdvancementKeys.ASSEMBLER, "ラヴェ(ン)ジャーズ,アッセンブル!", "組立機を手に入れる") add(RagiumAdvancementKeys.CRUSHER, "Macerator, Pulverizer, or Crusher?", "粉砕機を手に入れる") - add(RagiumAdvancementKeys.HEAT_MACHINE_CASING, "Heat And Cool", "マシンケーシング(熱)を作る") + add(RagiumAdvancementKeys.HEAT_MACHINE_PARTS, "Heat And Cool", "マシンケーシング(熱)を作る") add(RagiumAdvancementKeys.BLACK_STEEL, "黒い咆哮", "黒鋼をつくる") add(RagiumAdvancementKeys.FREEZER, "私の消費電力は53万です", "冷凍機を手に入れる") add(RagiumAdvancementKeys.MELTER, "融けてしまいそう", "溶融炉を手に入れる") diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 2ebb67795..3bfee46ac 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -7,10 +7,10 @@ "advancement.ragium.crusher.title": "Macerator, Pulverizer, or Crusher?", "advancement.ragium.freezer.desc": "Acquire Freezer", "advancement.ragium.freezer.title": "My power is 530,000.", - "advancement.ragium.heat_machine_casing.desc": "Craft a Machine Casing (Heat)", - "advancement.ragium.heat_machine_casing.title": "Heat And Cool", - "advancement.ragium.mechanical_machine_casing.desc": "Craft a Machine Casing (Mechanical)", - "advancement.ragium.mechanical_machine_casing.title": "Mechanical Machines", + "advancement.ragium.heat_machine_parts.desc": "Craft a Machine Casing (Heat)", + "advancement.ragium.heat_machine_parts.title": "Heat And Cool", + "advancement.ragium.mechanical_machine_parts.desc": "Craft a Machine Casing (Mechanical)", + "advancement.ragium.mechanical_machine_parts.title": "Mechanical Machines", "advancement.ragium.melter.desc": "Acquire Melter", "advancement.ragium.melter.title": "(S)melter(y)", "advancement.ragium.root.desc": "Welcome to Ragium!", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index fd8b34801..ae68305a3 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -7,10 +7,10 @@ "advancement.ragium.crusher.title": "Macerator, Pulverizer, or Crusher?", "advancement.ragium.freezer.desc": "冷凍機を手に入れる", "advancement.ragium.freezer.title": "私の消費電力は53万です", - "advancement.ragium.heat_machine_casing.desc": "マシンケーシング(熱)を作る", - "advancement.ragium.heat_machine_casing.title": "Heat And Cool", - "advancement.ragium.mechanical_machine_casing.desc": "マシンケーシング(機械加工)を作る", - "advancement.ragium.mechanical_machine_casing.title": "機械・加工・機械", + "advancement.ragium.heat_machine_parts.desc": "マシンケーシング(熱)を作る", + "advancement.ragium.heat_machine_parts.title": "Heat And Cool", + "advancement.ragium.mechanical_machine_parts.desc": "マシンケーシング(機械加工)を作る", + "advancement.ragium.mechanical_machine_parts.title": "機械・加工・機械", "advancement.ragium.melter.desc": "溶融炉を手に入れる", "advancement.ragium.melter.title": "融けてしまいそう", "advancement.ragium.root.desc": "ラギウムへようこそ!", diff --git a/src/generated/resources/data/ragium/advancement/assembler.json b/src/generated/resources/data/ragium/advancement/assembler.json index d7162bba5..87cd72295 100644 --- a/src/generated/resources/data/ragium/advancement/assembler.json +++ b/src/generated/resources/data/ragium/advancement/assembler.json @@ -1,5 +1,5 @@ { - "parent": "ragium:mechanical_machine_casing", + "parent": "ragium:mechanical_machine_parts", "criteria": { "has_assembler": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/chemical_bath.json b/src/generated/resources/data/ragium/advancement/chemical_bath.json index 45f7d634e..f20cfc54a 100644 --- a/src/generated/resources/data/ragium/advancement/chemical_bath.json +++ b/src/generated/resources/data/ragium/advancement/chemical_bath.json @@ -1,5 +1,5 @@ { - "parent": "ragium:chemical_machine_casing", + "parent": "ragium:chemical_machine_parts", "criteria": { "has_chemical_bath": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json b/src/generated/resources/data/ragium/advancement/chemical_machine_parts.json similarity index 79% rename from src/generated/resources/data/ragium/advancement/chemical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/chemical_machine_parts.json index 34a663721..98771fd4c 100644 --- a/src/generated/resources/data/ragium/advancement/chemical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/chemical_machine_parts.json @@ -14,14 +14,14 @@ }, "display": { "description": { - "translate": "advancement.ragium.chemical_machine_casing.desc" + "translate": "advancement.ragium.chemical_machine_parts.desc" }, "frame": "goal", "icon": { "id": "ragium:chemical_machine_parts" }, "title": { - "translate": "advancement.ragium.chemical_machine_casing.title" + "translate": "advancement.ragium.chemical_machine_parts.title" } }, "requirements": [ diff --git a/src/generated/resources/data/ragium/advancement/crusher.json b/src/generated/resources/data/ragium/advancement/crusher.json index 6f95230fb..6f0e9437e 100644 --- a/src/generated/resources/data/ragium/advancement/crusher.json +++ b/src/generated/resources/data/ragium/advancement/crusher.json @@ -1,5 +1,5 @@ { - "parent": "ragium:mechanical_machine_casing", + "parent": "ragium:mechanical_machine_parts", "criteria": { "has_crusher": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/freezer.json b/src/generated/resources/data/ragium/advancement/freezer.json index e9db84b02..1b1e7f084 100644 --- a/src/generated/resources/data/ragium/advancement/freezer.json +++ b/src/generated/resources/data/ragium/advancement/freezer.json @@ -1,5 +1,5 @@ { - "parent": "ragium:heat_machine_casing", + "parent": "ragium:heat_machine_parts", "criteria": { "has_freezer": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json b/src/generated/resources/data/ragium/advancement/heat_machine_parts.json similarity index 80% rename from src/generated/resources/data/ragium/advancement/heat_machine_casing.json rename to src/generated/resources/data/ragium/advancement/heat_machine_parts.json index 83c3c7474..4a948b7ae 100644 --- a/src/generated/resources/data/ragium/advancement/heat_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/heat_machine_parts.json @@ -14,14 +14,14 @@ }, "display": { "description": { - "translate": "advancement.ragium.heat_machine_casing.desc" + "translate": "advancement.ragium.heat_machine_parts.desc" }, "frame": "goal", "icon": { "id": "ragium:heat_machine_parts" }, "title": { - "translate": "advancement.ragium.heat_machine_casing.title" + "translate": "advancement.ragium.heat_machine_parts.title" } }, "requirements": [ diff --git a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json b/src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json similarity index 79% rename from src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json rename to src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json index 9197529ef..1809bd669 100644 --- a/src/generated/resources/data/ragium/advancement/mechanical_machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/mechanical_machine_parts.json @@ -14,14 +14,14 @@ }, "display": { "description": { - "translate": "advancement.ragium.mechanical_machine_casing.desc" + "translate": "advancement.ragium.mechanical_machine_parts.desc" }, "frame": "goal", "icon": { "id": "ragium:mechanical_machine_parts" }, "title": { - "translate": "advancement.ragium.mechanical_machine_casing.title" + "translate": "advancement.ragium.mechanical_machine_parts.title" } }, "requirements": [ diff --git a/src/generated/resources/data/ragium/advancement/melter.json b/src/generated/resources/data/ragium/advancement/melter.json index a137e53d8..721f1d56d 100644 --- a/src/generated/resources/data/ragium/advancement/melter.json +++ b/src/generated/resources/data/ragium/advancement/melter.json @@ -1,5 +1,5 @@ { - "parent": "ragium:heat_machine_casing", + "parent": "ragium:heat_machine_parts", "criteria": { "has_melter": { "conditions": { diff --git a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt index 1b8a31cfd..e3b65aec6 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt @@ -19,7 +19,7 @@ data object RagiumAdvancementKeys { // Mechanical @JvmField - val MECHANICAL_MACHINE_CASING: AdvancementKey = create("mechanical_machine_casing") + val MECHANICAL_MACHINE_PARTS: AdvancementKey = create("mechanical_machine_parts") @JvmField val ASSEMBLER: AdvancementKey = create(RagiumConstants.ASSEMBLER) @@ -29,7 +29,7 @@ data object RagiumAdvancementKeys { // Heat @JvmField - val HEAT_MACHINE_CASING: AdvancementKey = create("heat_machine_casing") + val HEAT_MACHINE_PARTS: AdvancementKey = create("heat_machine_parts") @JvmField val BLACK_STEEL: AdvancementKey = create("black_steel") @@ -42,7 +42,7 @@ data object RagiumAdvancementKeys { // Chemical @JvmField - val CHEMICAL_MACHINE_CASING: AdvancementKey = create("chemical_machine_casing") + val CHEMICAL_MACHINE_PARTS: AdvancementKey = create("chemical_machine_parts") @JvmField val CHEMICAL_BATH: AdvancementKey = create(RagiumConstants.CHEMICAL_BATH) From b923f3718f89f087e8c37f3b32c71186a5d89ca6 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 00:51:51 +0900 Subject: [PATCH 07/28] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E6=A9=9F=E6=A2=B0=E3=80=8CSmelter=20/=20=E8=A3=BD=E9=8C=AC?= =?UTF-8?q?=E7=82=89=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 4 + .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../recipe/RagiumVanillaRecipeProvider.kt | 5 + .../assets/ragium/blockstates/smelter.json | 34 +++++ .../assets/ragium/items/smelter.json | 6 + .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../assets/ragium/models/block/smelter.json | 8 + .../ragium/models/block/smelter_active.json | 8 + .../tags/block/mineable/pickaxe.json | 1 + .../advancement/recipes/misc/smelter.json | 32 ++++ .../ragium/loot_table/blocks/smelter.json | 21 +++ .../resources/data/ragium/recipe/smelter.json | 18 +++ .../data/ragium/tags/block/machines/heat.json | 3 +- .../data/ragium/tags/item/machines/heat.json | 3 +- .../hiiragi283/ragium/api/RagiumConfig.kt | 66 ++++---- .../hiiragi283/ragium/api/RagiumConstants.kt | 2 +- .../api/data/recipe/RagiumRecipeBuilders.kt | 11 -- .../ragium/api/recipe/RTSmeltingRecipe.kt | 24 --- .../api/recipe/RagiumRecipeSerializers.kt | 4 - .../ragium/api/recipe/RagiumRecipeTypes.kt | 3 - .../kotlin/hiiragi283/ragium/common/Ragium.kt | 1 + .../ragium/common/block/RagiumBlocks.kt | 5 + .../block/entity/RagiumBlockEntityTypes.kt | 5 + .../entity/machine/HTSmelterBlockEntity.kt | 144 ++++++++++++++++++ 26 files changed, 339 insertions(+), 73 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/smelter.json create mode 100644 src/generated/resources/assets/ragium/items/smelter.json create mode 100644 src/generated/resources/assets/ragium/models/block/smelter.json create mode 100644 src/generated/resources/assets/ragium/models/block/smelter_active.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smelter.json create mode 100644 src/generated/resources/data/ragium/recipe/smelter.json delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 886c88174..b48de7ae8 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -29,6 +29,7 @@ import hiiragi283.ragium.client.integration.jei.category.RTRefiningRecipeCategor import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import mezz.jei.api.JeiPlugin +import mezz.jei.api.constants.RecipeTypes import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.helpers.IPlatformFluidHelper import mezz.jei.api.neoforge.NeoForgeTypes @@ -207,6 +208,9 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addCraftingStation(RagiumJeiRecipeTypes.MELTING, RagiumBlocks.MELTER) registration.addCraftingStation(RagiumJeiRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) registration.addCraftingStation(RagiumJeiRecipeTypes.REFINING, RagiumBlocks.REFINERY) + registration.addCraftingStation(RecipeTypes.SMELTING, RagiumBlocks.SMELTER) + registration.addCraftingStation(RecipeTypes.BLASTING, RagiumBlocks.SMELTER) + registration.addCraftingStation(RecipeTypes.SMOKING, RagiumBlocks.SMELTER) // Chemical registration.addCraftingStation(RagiumJeiRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) registration.addCraftingStation(RagiumJeiRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 5a34f747a..76843aae9 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -47,6 +47,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.MELTER, "Melter") add(RagiumBlocks.PYROLYZER, "Pyrolyzer") add(RagiumBlocks.REFINERY, "Refinery") + add(RagiumBlocks.SMELTER, "Smelter") add(RagiumBlocks.CHEMICAL_BATH, "Chemical Bath") add(RagiumBlocks.CHEMICAL_REACTOR, "Chemical Reactor") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 8deba136d..2bfef0b8c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -43,6 +43,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.MELTER, "溶融炉") add(RagiumBlocks.PYROLYZER, "熱分解炉") add(RagiumBlocks.REFINERY, "精製機") + add(RagiumBlocks.SMELTER, "製錬炉") add(RagiumBlocks.CHEMICAL_BATH, "化学浴槽") add(RagiumBlocks.CHEMICAL_REACTOR, "化学反応槽") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 9fc065dfc..23c71e1e3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -266,6 +266,11 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec define('D', Tags.Items.BUCKETS_LAVA) unlockedBy(getHasName(Tags.Items.BUCKETS_LAVA), has(Tags.Items.BUCKETS_LAVA)) } + + heat(RagiumBlocks.SMELTER) { + define('D', Items.FURNACE) + unlockedBy(getHasName(Items.FURNACE), has(Items.FURNACE)) + } // Chemical chemical(RagiumBlocks.CHEMICAL_BATH) { define('D', Items.CAULDRON) diff --git a/src/generated/resources/assets/ragium/blockstates/smelter.json b/src/generated/resources/assets/ragium/blockstates/smelter.json new file mode 100644 index 000000000..4fb12988b --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smelter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/smelter", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/smelter_active", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/smelter" + }, + "facing=north,is_active=true": { + "model": "ragium:block/smelter_active" + }, + "facing=south,is_active=false": { + "model": "ragium:block/smelter", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/smelter_active", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/smelter", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/smelter_active", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smelter.json b/src/generated/resources/assets/ragium/items/smelter.json new file mode 100644 index 000000000..3d65ed2fe --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smelter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 3bfee46ac..3aa0b2a95 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -83,6 +83,7 @@ "block.ragium.red_dye": "Red Dye", "block.ragium.refinery": "Refinery", "block.ragium.scanner": "Laser Scanner", + "block.ragium.smelter": "Smelter", "block.ragium.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "block.ragium.sooty_iron_block": "Block of Sooty Iron", "block.ragium.sulfur_dioxide": "Sulfur Dioxide", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index ae68305a3..76de38037 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -83,6 +83,7 @@ "block.ragium.red_dye": "赤色の染料", "block.ragium.refinery": "精製機", "block.ragium.scanner": "レーザースキャナ", + "block.ragium.smelter": "製錬炉", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "block.ragium.sooty_iron_block": "煤鉄ブロック", "block.ragium.sulfur_dioxide": "二酸化硫黄", diff --git a/src/generated/resources/assets/ragium/models/block/smelter.json b/src/generated/resources/assets/ragium/models/block/smelter.json new file mode 100644 index 000000000..ac9251ffc --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smelter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/smelter_front", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smelter_active.json b/src/generated/resources/assets/ragium/models/block/smelter_active.json new file mode 100644 index 000000000..f7a8ee8b2 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smelter_active.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/smelter_front_active", + "side": "ragium:block/machine_casing/heat", + "top": "ragium:block/machine_casing" + } +} \ 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 cecbf485c..a11bac426 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -31,6 +31,7 @@ "ragium:pyrolyzer", "ragium:refinery", "ragium:scanner", + "ragium:smelter", "ragium:sooty_iron_block", "ragium:sulfur_ore", "ragium:void_metal_block" diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json new file mode 100644 index 000000000..cd4e9a561 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_furnace": { + "conditions": { + "items": [ + { + "items": "minecraft:furnace" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_furnace" + ] + ], + "rewards": { + "recipes": [ + "ragium:smelter" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smelter.json b/src/generated/resources/data/ragium/loot_table/blocks/smelter.json new file mode 100644 index 000000000..e49b128f6 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smelter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:smelter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smelter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelter.json b/src/generated/resources/data/ragium/recipe/smelter.json new file mode 100644 index 000000000..4cbe82578 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelter.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "ragium:heat_machine_parts", + "C": "#c:gears/iron", + "D": "minecraft:furnace" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/heat.json b/src/generated/resources/data/ragium/tags/block/machines/heat.json index f8a6411bd..9dcea7829 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/block/machines/heat.json @@ -3,6 +3,7 @@ "ragium:freezer", "ragium:melter", "ragium:pyrolyzer", - "ragium:refinery" + "ragium:refinery", + "ragium:smelter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/heat.json b/src/generated/resources/data/ragium/tags/item/machines/heat.json index f8a6411bd..9dcea7829 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/item/machines/heat.json @@ -3,6 +3,7 @@ "ragium:freezer", "ragium:melter", "ragium:pyrolyzer", - "ragium:refinery" + "ragium:refinery", + "ragium:smelter" ] } \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index faa1fa40f..77950d8ae 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -65,71 +65,81 @@ data object RagiumConfig { // Mechanical @JvmField - val assembler: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.ASSEMBLER) + val assembler: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ASSEMBLER) @JvmField - val crusher: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CRUSHER) + val crusher: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CRUSHER) @JvmField - val compressor: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.COMPRESSOR) + val compressor: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.COMPRESSOR) @JvmField - val cuttingMachine: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CUTTING_MACHINE) + val cuttingMachine: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CUTTING_MACHINE) // Heat @JvmField - val freezer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.FREEZER) + val freezer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.FREEZER) @JvmField - val melter: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER) + val melter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER) @JvmField - val pyrolyzer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER) + val pyrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER) @JvmField - val refinery: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY) + val refinery: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY) + + @JvmField + val smelter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.SMELTER) // Chemical @JvmField - val chemicalBath: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_BATH) + val chemicalBath: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_BATH) @JvmField - val chemicalReactor: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.CHEMICAL_REACTOR - ) + val chemicalReactor: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_REACTOR) @JvmField - val electrolyzer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) + val electrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) @JvmField - val mixer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) + val mixer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) // Bio @JvmField - val brewery: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.BREWERY) + val brewery: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.BREWERY) @JvmField - val planter: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) + val planter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) // Electronics @JvmField - val scanner: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.SCANNER) + val scanner: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.SCANNER) // Arcane @JvmField - val fluidDuplicator: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.FLUID_DUPLICATOR, - 1024 - ) + val fluidDuplicator: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.FLUID_DUPLICATOR, 1024) @JvmField - val massFabricator: HTEnergyConfig = HTEnergyConfig.createMachine( - builder, - RagiumConstants.MASS_FABRICATOR, - 1024 - ) + val massFabricator: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.MASS_FABRICATOR, 1024) } init { diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 16fb45ea9..0b9f0a8e2 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -19,7 +19,7 @@ data object RagiumConstants { const val MELTER = "melter" const val PYROLYZER = "pyrolyzer" const val REFINERY = "refinery" - const val SMELTING = "smelting" + const val SMELTER = "smelter" // Chemical const val CHEMICAL_BATH = "chemical_bath" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt index 8e83eea04..9e15de2c4 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt @@ -22,7 +22,6 @@ import hiiragi283.ragium.api.recipe.RTMeltingRecipe import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTPlantingRecipe import hiiragi283.ragium.api.recipe.RTPyrolyzingRecipe -import hiiragi283.ragium.api.recipe.RTSmeltingRecipe import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -115,16 +114,6 @@ data object RagiumRecipeBuilders { return HTItemToRecipeBuilder.ToFluid(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) } - @JvmStatic - inline fun smelting( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.SMELTING, ::RTSmeltingRecipe).apply(builderAction) - } - @JvmStatic inline fun pyrolyzing( builderAction: HTItemToItemAndFluidRecipeBuilder.() -> Unit diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt deleted file mode 100644 index 177ffcb75..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTSmeltingRecipe.kt +++ /dev/null @@ -1,24 +0,0 @@ -package hiiragi283.ragium.api.recipe - -import hiiragi283.lib.recipe.HTRecipeType -import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTItemToRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTItemResult -import net.minecraft.world.item.crafting.RecipeSerializer -import net.minecraft.world.item.crafting.SingleRecipeInput - -class RTSmeltingRecipe(ingredient: HTItemIngredient, result: HTItemResult, progressData: HTProgressData) : - HTItemToRecipe.BasicItem(ingredient, result, progressData), - HTSerializableRecipe { - companion object { - @JvmField - val SERIALIZER: RecipeSerializer = - RecipeSerializer(codec(::RTSmeltingRecipe), streamCodec(::RTSmeltingRecipe)) - } - - override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.SMELTING - - override fun getType(): HTRecipeType = RagiumRecipeTypes.SMELTING -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index c60f17baf..23e246437 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -70,10 +70,6 @@ data object RagiumRecipeSerializers { val MELTING: RecipeSerializer = register(RagiumConstants.MELTING, RTMeltingRecipe.SERIALIZER) - @JvmField - val SMELTING: RecipeSerializer = - register(RagiumConstants.SMELTING, RTSmeltingRecipe.SERIALIZER) - @JvmField val PYROLYZING: RecipeSerializer = register(RagiumConstants.PYROLYZING, RTPyrolyzingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 3ae1a9175..cee57f745 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -54,9 +54,6 @@ data object RagiumRecipeTypes { @JvmField val MELTING: HTRecipeType = create(RagiumConstants.MELTING) - @JvmField - val SMELTING: HTRecipeType = create(RagiumConstants.SMELTING) - @JvmField val PYROLYZING: HTRecipeType = create(RagiumConstants.PYROLYZING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 323919c80..26d686952 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -217,6 +217,7 @@ data object Ragium : HTCommonMod() { registerProcessor(RagiumBlockEntityTypes.FREEZER.get()) registerProcessor(RagiumBlockEntityTypes.MELTER.get()) + registerProcessor(RagiumBlockEntityTypes.SMELTER.get()) registerProcessor(RagiumBlockEntityTypes.CHEMICAL_BATH.get()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index fae72d679..621c2a548 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -172,6 +172,10 @@ data object RagiumBlocks { val REFINERY: HTBasicDeferredBlockAndItem = registerFakeMachine(RagiumConstants.REFINERY) + @JvmField + val SMELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.SMELTER) + // Chemical @JvmField val CHEMICAL_BATH: HTBasicDeferredBlockAndItem = @@ -217,6 +221,7 @@ data object RagiumBlocks { put(HTMachineType.HEAT, MELTER) put(HTMachineType.HEAT, PYROLYZER) put(HTMachineType.HEAT, REFINERY) + put(HTMachineType.HEAT, SMELTER) put(HTMachineType.CHEMICAL, CHEMICAL_BATH) put(HTMachineType.CHEMICAL, CHEMICAL_REACTOR) 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 e2d8289bd..adf2ba6e1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -15,6 +15,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTCrusherBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCuttingMachineBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTFreezerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTMelterBlockEntity +import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.entity.BlockEntityType import net.neoforged.bus.api.IEventBus @@ -64,6 +65,10 @@ data object RagiumBlockEntityTypes { val MELTER: HTDeferredBlockEntityType = registerTick(RagiumConstants.MELTER, ::HTMelterBlockEntity) + @JvmField + val SMELTER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.SMELTER, ::HTSmelterBlockEntity) + // Chemical @JvmField val CHEMICAL_BATH: HTDeferredBlockEntityType = diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt new file mode 100644 index 000000000..3b5664eb3 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt @@ -0,0 +1,144 @@ +package hiiragi283.ragium.common.block.entity.machine + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.gui.HTSlotHelper +import hiiragi283.lib.gui.widget.HTWidgetHolder +import hiiragi283.lib.recipe.base.HTItemToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.handler.HTInputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlot +import hiiragi283.lib.recipe.ingredient.HTIngredientHelper +import hiiragi283.lib.transfer.item.HTBasicItemSlot +import hiiragi283.lib.transfer.useTransaction +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.gui.widget.HTItemWidget +import hiiragi283.ragium.common.transfer.holder.HTBasicItemSlotHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.server.level.ServerLevel +import net.minecraft.sounds.SoundEvents +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.AbstractCookingRecipe +import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.item.crafting.SingleRecipeInput +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.transfer.transaction.Transaction +import kotlin.jvm.optionals.getOrNull + +class HTSmelterBlockEntity(pos: BlockPos, state: BlockState) : + HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.SMELTER.get(), pos, state) { + override fun initializeVariables(listener: Runnable) { + super.initializeVariables(listener) + recipeHandler = object : EnergizedHandler() { + private val inputSlot: HTInputSlot.SingleItem by lazy { + HTInputSlot.SingleItem(this@HTSmelterBlockEntity.inputSlot) + } + private val outputSlot: HTOutputSlot by lazy { + HTOutputSlot.SingleItem(this@HTSmelterBlockEntity.outputSlot) + } + + override fun createInput(): SingleRecipeInput = SingleRecipeInput(inputSlot.getStack()) + + override fun findRecipe(level: ServerLevel, input: SingleRecipeInput): HTItemToItemRecipe? { + val stackIn: ItemStack = typeSlot.getStackCopy() + val recipeType = when { + stackIn.`is`(Items.BLAST_FURNACE) -> RecipeType.BLASTING + stackIn.`is`(Items.SMOKER) -> RecipeType.SMOKING + else -> RecipeType.SMELTING + } + return level.recipeAccess() + .getRecipeFor(recipeType, input, level) + .map { it.value() } + .map(::wrapRecipe) + .getOrNull() + } + + private fun wrapRecipe(recipe: AbstractCookingRecipe): HTItemToItemRecipe = object : HTItemToItemRecipe { + override fun test(input: ItemInstance): Boolean = + HTIngredientHelper.unwrap(input).let(recipe.input()::test) + + override fun apply(input: ItemInstance): ItemStack = + HTIngredientHelper.unwrap(input).let(::SingleRecipeInput).let(recipe::assemble) + + override fun getRequiredAmount(input: ItemInstance): Int = when { + test(input) -> 1 + else -> 0 + } + + override fun getProgressData(input: SingleRecipeInput): HTProgressData = + HTProgressData.time(recipe.cookingTime()) + } + + override fun canComplete(recipe: HTItemToItemRecipe, input: SingleRecipeInput, output: ItemStack): Boolean { + val inputCount: Int = recipe.getRequiredAmount(input.item()) + return inputCount != 0 && useTransaction { transaction: Transaction -> + when { + !inputSlot.canExtract(inputCount, transaction) -> false + else -> outputSlot.canInsert(output, transaction) + } + } + } + + override fun onComplete(recipe: HTItemToItemRecipe, input: SingleRecipeInput, output: ItemStack) { + val inputCount: Int = recipe.getRequiredAmount(input.item()) + useTransaction { transaction: Transaction -> + if (inputCount > 0) { + inputSlot.extract(inputCount, transaction) + } + outputSlot.insert(output, transaction) + transaction.commit() + } + playSound(SoundEvents.FIRE_EXTINGUISH) + } + } + } + + private lateinit var inputSlot: HTBasicItemSlot + private lateinit var typeSlot: HTBasicItemSlot + private lateinit var outputSlot: HTBasicItemSlot + + override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { + inputSlot = builder.addSlot(HTSlotInfo.INPUT, HTBasicItemSlot.input(listener)) + typeSlot = builder.addSlot(HTSlotInfo.NONE, HTBasicItemSlot.input(listener)) + outputSlot = builder.addSlot(HTSlotInfo.OUTPUT, HTBasicItemSlot.output(listener)) + } + + override fun setupMenu(widgetHolder: HTWidgetHolder) { + super.setupMenu(widgetHolder) + addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(2.5), HTSlotHelper.getSlotPosY(1)) + // progress + addProgressBar(widgetHolder) + // inputs + widgetHolder += HTItemWidget.Container( + inputSlot, + 0, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.INPUT + ) + widgetHolder.track(inputSlot) + widgetHolder += HTItemWidget.Container( + typeSlot, + 1, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(2), + HTBackgroundType.NONE + ) + widgetHolder.track(typeSlot) + // output + widgetHolder += HTItemWidget.Container( + outputSlot, + 2, + HTSlotHelper.getSlotPosX(6), + HTSlotHelper.getSlotPosY(1), + HTBackgroundType.OUTPUT + ) + widgetHolder.track(outputSlot) + } + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.smelter +} From 802d448673e4f65481843c47be8cf40c5d394a43 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 01:17:15 +0900 Subject: [PATCH 08/28] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF=E3=80=8CCreative=20Battery?= =?UTF-8?q?=20/=20=E3=82=AF=E3=83=AA=E3=82=A8=E3=82=A4=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=83=96=E7=94=A8=E3=83=90=E3=83=83=E3=83=86=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/lang/RagiumEnglishLangProvider.kt | 2 ++ .../data/lang/RagiumJapaneseLangProvider.kt | 2 ++ .../ragium/data/model/RagiumModelProvider.kt | 3 +++ .../ragium/blockstates/creative_battery.json | 7 +++++ .../assets/ragium/items/creative_battery.json | 6 +++++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/block/creative_battery.json | 6 +++++ .../loot_table/blocks/creative_battery.json | 21 +++++++++++++++ .../kotlin/hiiragi283/ragium/common/Ragium.kt | 9 +++++++ .../ragium/common/block/RagiumBlocks.kt | 19 ++++++++++--- .../block/entity/RagiumBlockEntityTypes.kt | 7 +++++ .../storage/HTCreativeBatteryBlockEntity.kt | 27 +++++++++++++++++++ 13 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/creative_battery.json create mode 100644 src/generated/resources/assets/ragium/items/creative_battery.json create mode 100644 src/generated/resources/assets/ragium/models/block/creative_battery.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 76843aae9..9e9b54081 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -59,6 +59,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.SCANNER, "Laser Scanner") + add(RagiumBlocks.CREATIVE_BATTERY, "Creative Battery") + add(RagiumBlocks.MACHINE_CASING, "Machine Casing") // Fluid addFluid(RagiumFluids.HONEY, "Honey") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 2bfef0b8c..57d7cf0c8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -55,6 +55,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.SCANNER, "レーザースキャナ") + add(RagiumBlocks.CREATIVE_BATTERY, "クリエイティブ用バッテリー") + add(RagiumBlocks.MACHINE_CASING, "機械ケーシング") // Fluid addFluid(RagiumFluids.HONEY, "ハチミツ") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 4fa0382ce..58fd35603 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -64,6 +64,9 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP private fun registerBlockModels(generators: BlockModelGenerators) { sequence { yieldAll(RagiumBlocks.MATERIAL_BLOCKS.values) + + yield(RagiumBlocks.CREATIVE_BATTERY) // TODO + yield(RagiumBlocks.MACHINE_CASING) }.forEach { generators.createTrivialCube(it.block.getOrThrow()) } diff --git a/src/generated/resources/assets/ragium/blockstates/creative_battery.json b/src/generated/resources/assets/ragium/blockstates/creative_battery.json new file mode 100644 index 000000000..dba945da4 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/creative_battery.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/creative_battery" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/creative_battery.json b/src/generated/resources/assets/ragium/items/creative_battery.json new file mode 100644 index 000000000..1810dcdb4 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/creative_battery.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/creative_battery" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 3aa0b2a95..4b0cdb6da 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -35,6 +35,7 @@ "block.ragium.coal_coke_block": "Block of Coal Coke", "block.ragium.coal_tar": "Coal Tar", "block.ragium.compressor": "Compressor", + "block.ragium.creative_battery": "Creative Battery", "block.ragium.crude_oil": "Crude Oil", "block.ragium.crusher": "Crusher", "block.ragium.cutting_machine": "Cutting Machine", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 76de38037..1e3e1a9dc 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -35,6 +35,7 @@ "block.ragium.coal_coke_block": "石炭コークスブロック", "block.ragium.coal_tar": "石炭タール", "block.ragium.compressor": "圧縮機", + "block.ragium.creative_battery": "クリエイティブ用バッテリー", "block.ragium.crude_oil": "原油", "block.ragium.crusher": "破砕機", "block.ragium.cutting_machine": "裁断機", diff --git a/src/generated/resources/assets/ragium/models/block/creative_battery.json b/src/generated/resources/assets/ragium/models/block/creative_battery.json new file mode 100644 index 000000000..1e6266c33 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/creative_battery.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/creative_battery" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json b/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json new file mode 100644 index 000000000..7a7e2abeb --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/creative_battery.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:creative_battery" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/creative_battery" +} \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 26d686952..fce932672 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -59,6 +59,7 @@ import net.neoforged.neoforge.registries.DataPackRegistryEvent import net.neoforged.neoforge.registries.NeoForgeRegistries import net.neoforged.neoforge.registries.RegisterEvent import net.neoforged.neoforge.transfer.access.ItemAccess +import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler @Mod(RagiumAPI.MOD_ID) data object Ragium : HTCommonMod() { @@ -166,6 +167,9 @@ data object Ragium : HTCommonMod() { } } } + event.modify(RagiumBlocks.CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> + builder.set(DataComponents.RARITY, Rarity.EPIC) + } // Item event.modify(Items.RAW_COPPER) { builder, provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.COPPER)) @@ -222,6 +226,11 @@ data object Ragium : HTCommonMod() { registerProcessor(RagiumBlockEntityTypes.CHEMICAL_BATH.get()) registerProcessor(RagiumBlockEntityTypes.BREWERY.get()) + // Storage + helper.registerBlockEntity( + HTEnergyCapabilities.block, + RagiumBlockEntityTypes.CREATIVE_BATTERY.get() + ) { _, _ -> InfiniteEnergyHandler.INSTANCE } } override fun registerPayload(registrar: PayloadRegistrar) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 621c2a548..1de29fdb5 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -57,15 +57,22 @@ data object RagiumBlocks { .sound(SoundType.COPPER) @JvmStatic - private fun registerMachine( + private fun registerMachine( type: HTDeferredBlockEntityType<*>, + factory: (HTDeferredBlockEntityType<*>, BlockBehaviour.Properties) -> BLOCK, properties: BlockBehaviour.Properties = machine() - ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( + ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( type.idOrThrow.path, properties, - { prop: BlockBehaviour.Properties -> HTMachineBlock(type, prop) } + { prop: BlockBehaviour.Properties -> factory(type, prop) } ) + @JvmStatic + private fun registerMachine( + type: HTDeferredBlockEntityType<*>, + properties: BlockBehaviour.Properties = machine() + ): HTBasicDeferredBlockAndItem = registerMachine(type, ::HTMachineBlock, properties) + @JvmStatic private fun registerFakeMachine( name: String, @@ -234,6 +241,12 @@ data object RagiumBlocks { put(HTMachineType.ELECTRONICS, SCANNER) } + // Storage // + + @JvmField + val CREATIVE_BATTERY: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.CREATIVE_BATTERY, ::HTBasicEntityBlock) + // Decoration // @JvmField 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 adf2ba6e1..91f6a2ce8 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -16,6 +16,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTCuttingMachineBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTFreezerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTMelterBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity +import hiiragi283.ragium.common.block.entity.storage.HTCreativeBatteryBlockEntity import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.entity.BlockEntityType import net.neoforged.bus.api.IEventBus @@ -82,6 +83,12 @@ data object RagiumBlockEntityTypes { // Electronics // Arcane + // Storage // + + @JvmField + val CREATIVE_BATTERY: HTDeferredBlockEntityType = + registerTick("creative_battery", ::HTCreativeBatteryBlockEntity) + // Event // // Supported Blocks diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt new file mode 100644 index 000000000..62c427eb0 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeBatteryBlockEntity.kt @@ -0,0 +1,27 @@ +package hiiragi283.ragium.common.block.entity.storage + +import hiiragi283.lib.capability.HTEnergyCapabilities +import hiiragi283.ragium.common.block.entity.HTBlockEntity +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import net.minecraft.core.BlockPos +import net.minecraft.core.Direction +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.transfer.energy.EnergyHandlerUtil +import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler + +class HTCreativeBatteryBlockEntity(worldPosition: BlockPos, blockState: BlockState) : + HTBlockEntity(RagiumBlockEntityTypes.CREATIVE_BATTERY.get(), worldPosition, blockState) { + + override fun onUpdateServer(level: ServerLevel, pos: BlockPos, state: BlockState): Boolean { + for (direction: Direction in Direction.entries) { + EnergyHandlerUtil.move( + InfiniteEnergyHandler.INSTANCE, + HTEnergyCapabilities.getCapability(level, pos.relative(direction), direction.opposite), + Int.MAX_VALUE, + null + ) + } + return false + } +} From 5e0e2d2c162075e4f1043f970e0183c886a4de53 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 01:24:04 +0900 Subject: [PATCH 09/28] =?UTF-8?q?refactor:=20HTDeferredBlockAndItemRegiste?= =?UTF-8?q?r=20=E3=81=AB=E6=96=B0=E3=81=97=E3=81=84=E7=99=BB=E9=8C=B2?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HTDeferredBlockAndItemRegister.kt | 45 ++++++++++++++++++- .../ragium/common/block/RagiumBlocks.kt | 13 ++---- 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt index 25f49fbb5..236020b33 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt @@ -3,6 +3,7 @@ package hiiragi283.lib.registry import hiiragi283.lib.util.Identity import hiiragi283.lib.util.identity import net.minecraft.resources.Identifier +import net.minecraft.resources.ResourceKey import net.minecraft.world.item.BlockItem import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block @@ -76,7 +77,7 @@ class HTDeferredBlockAndItemRegister( * @param ITEM アイテムのクラス * @param name ブロックとアイテムのIDのパス * @param blockProp ブロックのプロパティ - * @param blockFactory [BlockBehaviour.Properties]からブロックを作るブロック + * @param blockFactory [BlockBehaviour.Properties]から[BLOCK]を作るブロック * @param itemFactory [Item.Properties]と[BLOCK]からアイテムを作るブロック * @param itemProp [Item.Properties]を初期化するブロック * @return 新しい[HTDeferredBlockAndItem]のインスタンス @@ -97,6 +98,48 @@ class HTDeferredBlockAndItemRegister( return HTDeferredBlockAndItem(blockHolder, itemHolder) } + /** + * 新しいブロックとアイテムをまとめて登録します。 + * @param BLOCK ブロックのクラス + * @param name ブロックとアイテムのIDのパス + * @param blockFactory [BLOCK]を作るブロック + * @param itemProp [Item.Properties]を初期化するブロック + * @return 新しい[HTBasicDeferredBlockAndItem]のインスタンス + * @since 26.1.6 + */ + fun registerSimple( + name: String, + blockFactory: (ResourceKey) -> BLOCK, + itemProp: Identity = identity() + ): HTBasicDeferredBlockAndItem = register(name, blockFactory, ::BlockItem, itemProp) + + /** + * 新しいブロックとアイテムをまとめて登録します。 + * @param BLOCK ブロックのクラス + * @param ITEM アイテムのクラス + * @param name ブロックとアイテムのIDのパス + * @param blockFactory [BLOCK]を作るブロック + * @param itemFactory [Item.Properties]と[BLOCK]からアイテムを作るブロック + * @param itemProp [Item.Properties]を初期化するブロック + * @return 新しい[HTDeferredBlockAndItem]のインスタンス + * @since 26.1.6 + */ + fun register( + name: String, + blockFactory: (ResourceKey) -> BLOCK, + itemFactory: ItemWithContextFactory, + itemProp: Identity = identity() + ): HTDeferredBlockAndItem { + val blockHolder: HTDeferredBlock = + blockRegister.register(name) { id: Identifier -> blockFactory(blockRegister.createKey(id)) } + val itemHolder: HTDeferredItem = itemRegister.registerItem( + name, + { prop: Item.Properties -> itemFactory(blockHolder.get(), prop.useBlockDescriptionPrefix()) }, + itemProp + ) + return HTDeferredBlockAndItem(blockHolder, itemHolder) + } + /** * 登録されたブロックの一覧を取得します。 */ diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 1de29fdb5..2e03b50e5 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -61,11 +61,8 @@ data object RagiumBlocks { type: HTDeferredBlockEntityType<*>, factory: (HTDeferredBlockEntityType<*>, BlockBehaviour.Properties) -> BLOCK, properties: BlockBehaviour.Properties = machine() - ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - type.idOrThrow.path, - properties, - { prop: BlockBehaviour.Properties -> factory(type, prop) } - ) + ): HTBasicDeferredBlockAndItem = + REGISTER.registerSimple(type.idOrThrow.path, { factory(type, properties.setId(it)) }) @JvmStatic private fun registerMachine( @@ -79,8 +76,7 @@ data object RagiumBlocks { properties: BlockBehaviour.Properties = machine() ): HTBasicDeferredBlockAndItem = REGISTER.registerSimple( name, - properties, - { prop: BlockBehaviour.Properties -> HTMachineBlock(RagiumBlockEntityTypes.CRUSHER, prop) } // TODO + { HTMachineBlock(RagiumBlockEntityTypes.CRUSHER, properties.setId(it)) } // TODO ) // Ingredient // @@ -102,8 +98,7 @@ data object RagiumBlocks { material, REGISTER.registerSimple( part.createName(material), - properties, - blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), it) } + blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) } ) ) } From 673e71c0998fa98d36439fbb5d77d169b5ddbdd4 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 02:12:54 +0900 Subject: [PATCH 10/28] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E6=B6=B2=E4=BD=93=E3=80=8CBleach=20/=20=E6=BC=82=E7=99=BD?= =?UTF-8?q?=E5=89=A4=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- .../hiiragi283/ragium/client/RagiumClient.kt | 4 ++ .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../recipe/RagiumChemicalRecipeProvider.kt | 25 ------- .../data/recipe/RagiumCommonRecipeProvider.kt | 57 +++++++++++++++- .../recipe/RagiumMechanicalRecipeProvider.kt | 67 ++++++++++++++++--- .../assets/ragium/items/bleach_bucket.json | 12 ++++ .../resources/assets/ragium/lang/en_us.json | 4 ++ .../resources/assets/ragium/lang/ja_jp.json | 4 ++ .../resources/data/c/tags/fluid/bleach.json | 5 ++ .../resources/data/c/tags/item/buckets.json | 1 + .../data/c/tags/item/buckets/bleach.json | 5 ++ .../bathing/bleaching/white_banner.json | 20 ++++++ .../recipe/bathing/bleaching/white_bed.json | 20 ++++++ .../bathing/bleaching/white_carpet.json | 20 ++++++ .../bathing/bleaching/white_harness.json | 20 ++++++ .../bathing/bleaching/white_shulker_box.json | 20 ++++++ .../recipe/bathing/bleaching/white_wool.json | 20 ++++++ .../wood_dust_from_barrels_wooden.json | 12 ++++ .../recipe/crushing/wood_dust_from_boats.json | 16 +++++ .../crushing/wood_dust_from_chest_boats.json | 12 ++++ .../wood_dust_from_chests_wooden.json | 12 ++++ .../wood_dust_from_fence_gates_wooden.json | 12 ++++ .../wood_dust_from_fences_wooden.json | 12 ++++ .../crushing/wood_dust_from_gears_wood.json | 12 ++++ .../wood_dust_from_hanging_signs.json | 12 ++++ .../recipe/crushing/wood_dust_from_logs.json | 12 ++++ .../crushing/wood_dust_from_rods_wooden.json | 12 ++++ .../recipe/crushing/wood_dust_from_signs.json | 12 ++++ .../wood_dust_from_wooden_buttons.json | 12 ++++ .../crushing/wood_dust_from_wooden_doors.json | 12 ++++ ...wood_dust_from_wooden_pressure_plates.json | 12 ++++ .../wood_dust_from_wooden_shelves.json | 12 ++++ .../crushing/wood_dust_from_wooden_slabs.json | 12 ++++ .../wood_dust_from_wooden_stairs.json | 12 ++++ .../wood_dust_from_wooden_trapdoors.json | 12 ++++ .../HTDeferredBlockAndItemRegister.kt | 2 +- .../hiiragi283/lib/resource/Identifiers.kt | 7 ++ .../ragium/common/fluid/RagiumFluids.kt | 3 + 40 files changed, 501 insertions(+), 39 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/bleach_bucket.json create mode 100644 src/generated/resources/data/c/tags/fluid/bleach.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/bleach.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json diff --git a/build.gradle.kts b/build.gradle.kts index 389babba5..27ee13718 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -167,7 +167,7 @@ neoForge { sourceSet = clientModule jvmArgument("-Dmixin.debug.export=true") - devLogin = true + devLogin = false } register("server") { diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 9f7fff4d3..2f56e489a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -175,6 +175,10 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0x66cc33)) } + register.register(RagiumFluids.BLEACH) { + dull() + colorTint(Color(0xccff99)) + } register.register(RagiumFluids.ORE_SLURRY) { dull() diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 9e9b54081..481bd98e2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -91,6 +91,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "Sulfuric Acid") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") + addFluid(RagiumFluids.BLEACH, "Bleach") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 57d7cf0c8..1ceae9918 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -87,6 +87,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.SULFURIC_ACID, "硫酸") addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") + addFluid(RagiumFluids.BLEACH, "漂白剤") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 3e6ec36b4..75d395bb3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -18,7 +18,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu override fun exportValues() { bathing() electrolyzing() - mixing() } private fun bathing() { @@ -65,30 +64,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } recipeId suffix "_from_water" }.save(exporter) - // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) - RagiumRecipeBuilders.electrolyzing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } - fluidIngredient { +waterSet() } - result { - +RagiumFluids.HYDROGEN - amount /= 2 - } - result { - +RagiumFluids.CHLORINE - amount /= 2 - } - result { +RagiumFluids.NAOH_SOLUTION } - recipeId suffix "_from_salt_water" - }.save(exporter) - } - - private fun mixing() { - // Naphtha + Redstone -> Anti-rust Oil - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } - fluidIngredient { +holderSet(RagiumFluids.NAPHTHA) } - result { +RagiumFluids.ANTI_RUST_OIL } - }.save(exporter) } override fun getName(): String = "Chemical Recipes" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index e64c68a82..e7934f16a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -12,8 +12,12 @@ import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.tags.ItemTags +import net.minecraft.tags.TagKey +import net.minecraft.world.item.Item import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.Ingredient import net.neoforged.neoforge.common.Tags +import net.neoforged.neoforge.common.crafting.DifferenceIngredient import java.util.concurrent.CompletableFuture class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : @@ -146,6 +150,12 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu recipeId suffix "_from_naphtha" }.save(exporter) // Naphtha + O2 -> Plastic TODO + // Naphtha + Redstone -> Anti-rust Oil + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } + fluidIngredient { +holderSet(RagiumFluids.NAPHTHA) } + result { +RagiumFluids.ANTI_RUST_OIL } + }.save(exporter) // Tar -> Aromatic Compound + Pitch Coke RagiumRecipeBuilders.pyrolyzing { @@ -169,25 +179,66 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Chemical // private fun chemical() { - hydroChloricAcid() + chlorine() sulfuricAcid() nitricAcid() explosive() } - private fun hydroChloricAcid() { + private fun chlorine() { + // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) + RagiumRecipeBuilders.electrolyzing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } + fluidIngredient { +waterSet() } + result { + +RagiumFluids.HYDROGEN + amount /= 2 + } + result { + +RagiumFluids.CHLORINE + amount /= 2 + } + result { +RagiumFluids.NAOH_SOLUTION } + recipeId suffix "_from_salt_water" + }.save(exporter) + // H2 + Cl2 -> 2 HCl RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.HYDROGEN) } secondaryIngredient { +holderSet(RagiumFluids.CHLORINE) } fluidResult { +RagiumFluids.HYDROGEN_CHLORIDE } }.save(exporter) - // HCl + H2O -> Hcl(aq) + // HCl + H2O -> HCl(aq) RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.HYDROGEN_CHLORIDE) } secondaryIngredient { +waterSet() } fluidResult { +RagiumFluids.HYDROCHLORIC_ACID } }.save(exporter) + + // Cl2 + 2x NaOH(aq) -> 2x NaClO(aq) + H2 + + bleaching() + } + + private fun bleaching() { + setOf( + ItemTags.BANNERS to Items.WHITE_BANNER, + ItemTags.BEDS to Items.WHITE_BED, + ItemTags.HARNESSES to Items.WHITE_HARNESS, + ItemTags.SHULKER_BOXES to Items.WHITE_SHULKER_BOX, + ItemTags.WOOL to Items.WHITE_WOOL, + ItemTags.WOOL_CARPETS to Items.WHITE_CARPET + ).forEach { (input: TagKey, bleached: Item) -> + RagiumRecipeBuilders.bathing { + itemIngredient { +DifferenceIngredient.of(Ingredient.of(holderSet(input)), Ingredient.of(bleached)) } + fluidIngredient { + +holderSet(RagiumFluids.BLEACH) + amount /= 8 + } + result { +bleached } + recipeId prefix "bleaching/" + }.save(exporter) + } } private fun sulfuricAcid() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 0536271e8..3d556898a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags @@ -24,8 +25,10 @@ import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.common.Tags +import net.neoforged.neoforge.common.crafting.DifferenceIngredient import java.util.concurrent.CompletableFuture class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : @@ -350,8 +353,9 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } private fun crushing() { - crushIntoDust() - crushOres() + crushMaterial() + crushWood() + crushOre() dyes() // XX Block -> XX @@ -417,7 +421,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - private fun crushIntoDust() { + private fun crushMaterial() { // XX Dust for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) @@ -444,11 +448,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(ItemTags.PLANKS) } - primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.WOOD) } - recipeId suffix "_from_planks" - }.save(exporter) RagiumRecipeBuilders.crushing { ingredient { +holderSet(Tags.Items.GLASS_BLOCKS) } primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.GLASS) } @@ -471,7 +470,57 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - private fun crushOres() { + private fun crushWood() { + val woodPulp: HTSimpleDeferredItem = RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.WOOD) + setOf( + Triple(ItemTags.PLANKS, 1, 1), + Triple(ItemTags.WOODEN_BUTTONS, 1, 1), + Triple(ItemTags.WOODEN_DOORS, 1, 2), + Triple(ItemTags.WOODEN_STAIRS, 2, 3), + Triple(ItemTags.WOODEN_SLABS, 2, 1), + Triple(ItemTags.WOODEN_PRESSURE_PLATES, 1, 2), + Triple(ItemTags.WOODEN_SHELVES, 1, 6), + Triple(ItemTags.LOGS, 1, 6), + Triple(ItemTags.WOODEN_TRAPDOORS, 3, 1), + Triple(ItemTags.SIGNS, 1, 2), + Triple(ItemTags.HANGING_SIGNS, 1, 6), + Triple(ItemTags.CHEST_BOATS, 1, 13), + Triple(Tags.Items.BARRELS_WOODEN, 1, 7), + Triple(Tags.Items.CHESTS_WOODEN, 1, 8), + Triple(Tags.Items.FENCE_GATES_WOODEN, 1, 4), + Triple(Tags.Items.FENCES_WOODEN, 1, 1), + Triple(Tags.Items.RODS_WOODEN, 2, 1), + Triple(CommonTagPrefixes.GEAR.itemTagKey(RagiumMaterial.Other.WOOD), 4, 1) + ).forEach { (input: TagKey, inputCount: Int, outputCount: Int) -> + RagiumRecipeBuilders.crushing { + ingredient { + +holderSet(input) + count = inputCount + } + primary { + +woodPulp + count = outputCount + } + recipeId suffix "_from_${input.location().debugPath}" + }.save(exporter) + } + + RagiumRecipeBuilders.crushing { + ingredient { + +DifferenceIngredient.of( + Ingredient.of(holderSet(ItemTags.BOATS)), + Ingredient.of(holderSet(ItemTags.CHEST_BOATS)) + ) + } + primary { + +woodPulp + count = 5 + } + recipeId suffix "_from_boats" + }.save(exporter) + } + + private fun crushOre() { // XX Ore -> XX Dust RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Fuel.COAL) } diff --git a/src/generated/resources/assets/ragium/items/bleach_bucket.json b/src/generated/resources/assets/ragium/items/bleach_bucket.json new file mode 100644 index 000000000..1611f445a --- /dev/null +++ b/src/generated/resources/assets/ragium/items/bleach_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:bleach", + "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/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 4b0cdb6da..ef6d4b1a5 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -24,6 +24,7 @@ "block.ragium.bio_machine_casing": "Machine Casing (Bio)", "block.ragium.black_dye": "Black Dye", "block.ragium.black_steel_block": "Block of Black Steel", + "block.ragium.bleach": "Bleach", "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", @@ -156,6 +157,7 @@ "item.ragium.black_dye_bucket": "Black Dye Bucket", "item.ragium.black_steel_ingot": "Black Steel Ingot", "item.ragium.black_steel_nugget": "Black Steel Nugget", + "item.ragium.bleach_bucket": "Bleach Bucket", "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", @@ -274,6 +276,7 @@ "recipe_type.ragium.refining": "Refining", "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", + "tag.fluid.c.bleach": "Bleach", "tag.fluid.c.chloride": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", "tag.fluid.c.crude_oil": "Crude Oil", @@ -314,6 +317,7 @@ "tag.fluid.c.wood_tar": "Wood Tar", "tag.item.c.buckets.anti_rust_oil": "Anti-rust Oil Bucket", "tag.item.c.buckets.aromatic_compound": "Aromatic Compound Bucket", + "tag.item.c.buckets.bleach": "Bleach Bucket", "tag.item.c.buckets.chloride": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", "tag.item.c.buckets.crude_oil": "Crude Oil Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 1e3e1a9dc..a225d1181 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -24,6 +24,7 @@ "block.ragium.bio_machine_casing": "機械筐体 (生体)", "block.ragium.black_dye": "黒色の染料", "block.ragium.black_steel_block": "黒鋼ブロック", + "block.ragium.bleach": "漂白剤", "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", @@ -156,6 +157,7 @@ "item.ragium.black_dye_bucket": "黒色の染料入りバケツ", "item.ragium.black_steel_ingot": "黒鋼インゴット", "item.ragium.black_steel_nugget": "黒鋼ナゲット", + "item.ragium.bleach_bucket": "漂白剤入りバケツ", "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", @@ -274,6 +276,7 @@ "recipe_type.ragium.refining": "蒸留", "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", + "tag.fluid.c.bleach": "漂白剤", "tag.fluid.c.chloride": "塩素", "tag.fluid.c.coal_tar": "石炭タール", "tag.fluid.c.crude_oil": "原油", @@ -314,6 +317,7 @@ "tag.fluid.c.wood_tar": "木タール", "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", + "tag.item.c.buckets.bleach": "漂白剤入りバケツ", "tag.item.c.buckets.chloride": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", "tag.item.c.buckets.crude_oil": "原油入りバケツ", diff --git a/src/generated/resources/data/c/tags/fluid/bleach.json b/src/generated/resources/data/c/tags/fluid/bleach.json new file mode 100644 index 000000000..4760714f9 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/bleach.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:bleach" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index d7744c7b3..187a939ef 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -2,6 +2,7 @@ "values": [ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", + "#c:buckets/bleach", "#c:buckets/chloride", "#c:buckets/coal_tar", "#c:buckets/crude_oil", diff --git a/src/generated/resources/data/c/tags/item/buckets/bleach.json b/src/generated/resources/data/c/tags/item/buckets/bleach.json new file mode 100644 index 000000000..831b1876b --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/bleach.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:bleach_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json new file mode 100644 index 000000000..879912fca --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_banner.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:banners", + "subtracted": "minecraft:white_banner" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_banner" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json new file mode 100644 index 000000000..f43955ed3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_bed.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:beds", + "subtracted": "minecraft:white_bed" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_bed" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json new file mode 100644 index 000000000..3ccbc19a1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_carpet.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:wool_carpets", + "subtracted": "minecraft:white_carpet" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_carpet" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json new file mode 100644 index 000000000..a059b200d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_harness.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:harnesses", + "subtracted": "minecraft:white_harness" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_harness" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json new file mode 100644 index 000000000..4fe6d4823 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_shulker_box.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:shulker_boxes", + "subtracted": "minecraft:white_shulker_box" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_shulker_box" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json new file mode 100644 index 000000000..212259408 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/bleaching/white_wool.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#c:bleach" + }, + "item_ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:wool", + "subtracted": "minecraft:white_wool" + } + }, + "result": { + "count": 1, + "id": "minecraft:white_wool" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json new file mode 100644 index 000000000..02d811d09 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_barrels_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:barrels/wooden" + }, + "primary_result": { + "count": 7, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json new file mode 100644 index 000000000..d3b51e0dd --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_boats.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "neoforge:difference", + "base": "#minecraft:boats", + "subtracted": "#minecraft:chest_boats" + } + }, + "primary_result": { + "count": 5, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json new file mode 100644 index 000000000..1f9644759 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chest_boats.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:chest_boats" + }, + "primary_result": { + "count": 13, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json new file mode 100644 index 000000000..8f5965d5a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_chests_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:chests/wooden" + }, + "primary_result": { + "count": 8, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json new file mode 100644 index 000000000..de3e0d810 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fence_gates_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:fence_gates/wooden" + }, + "primary_result": { + "count": 4, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json new file mode 100644 index 000000000..194b0efd3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_fences_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:fences/wooden" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json new file mode 100644 index 000000000..f5a798d3d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gears_wood.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 4, + "items": "#c:gears/wood" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json new file mode 100644 index 000000000..b382f45af --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_hanging_signs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:hanging_signs" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json new file mode 100644 index 000000000..9fa77fa1c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_logs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:logs" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json new file mode 100644 index 000000000..49a657d9f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_rods_wooden.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#c:rods/wooden" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json new file mode 100644 index 000000000..a2b716c1f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_signs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:signs" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json new file mode 100644 index 000000000..d15344418 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_buttons.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_buttons" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json new file mode 100644 index 000000000..e12d54cee --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_doors.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_doors" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json new file mode 100644 index 000000000..8e2eb2391 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_pressure_plates.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_pressure_plates" + }, + "primary_result": { + "count": 2, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json new file mode 100644 index 000000000..dd7ee185a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_shelves.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#minecraft:wooden_shelves" + }, + "primary_result": { + "count": 6, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json new file mode 100644 index 000000000..553579311 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_slabs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#minecraft:wooden_slabs" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json new file mode 100644 index 000000000..5ef313c85 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_stairs.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 2, + "items": "#minecraft:wooden_stairs" + }, + "primary_result": { + "count": 3, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json new file mode 100644 index 000000000..77981dc99 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_wooden_trapdoors.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 3, + "items": "#minecraft:wooden_trapdoors" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt index 236020b33..36ec672bf 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlockAndItemRegister.kt @@ -130,7 +130,7 @@ class HTDeferredBlockAndItemRegister( itemFactory: ItemWithContextFactory, itemProp: Identity = identity() ): HTDeferredBlockAndItem { - val blockHolder: HTDeferredBlock = + val blockHolder: HTDeferredBlock = blockRegister.register(name) { id: Identifier -> blockFactory(blockRegister.createKey(id)) } val itemHolder: HTDeferredItem = itemRegister.registerItem( name, diff --git a/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt b/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt index 3d40d8cd0..b7dbf5997 100644 --- a/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt +++ b/src/lib/kotlin/hiiragi283/lib/resource/Identifiers.kt @@ -62,6 +62,13 @@ val Identifier.itemId: Identifier get() = when { else -> this.withPrefix("item/") } +/** + * @see Identifier.toDebugFileName + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +val Identifier.debugPath: String get() = this.path.replace('/', '_') + // ResourceKey // /** diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index f31f157bb..837068185 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -212,6 +212,9 @@ data object RagiumFluids { properties = liquid() } + @JvmField + val BLEACH: HTFluidContent.Virtual = REGISTER.registerVirtual("bleach") { properties = liquid() } + // Other @JvmField val ORE_SLURRY: HTFluidContent.Virtual = REGISTER.registerVirtual("ore_slurry") { From 263be680409593076a0c9e5b1f7450fd77860b75 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 02:19:12 +0900 Subject: [PATCH 11/28] =?UTF-8?q?refactor:=20=E9=80=B2=E6=8D=97=E3=81=AE?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=90=8D=E3=81=AE=E5=91=BD=E5=90=8D=E6=B3=95?= =?UTF-8?q?=E5=89=87=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/recipe/RagiumVanillaRecipeProvider.kt | 3 ++- .../recipes/building_blocks/black_steel_block.json | 4 ++-- .../advancement/recipes/building_blocks/echo_block.json | 4 ++-- .../recipes/building_blocks/sooty_iron_block.json | 4 ++-- .../recipes/building_blocks/void_metal_block.json | 4 ++-- .../advancement/recipes/decorations/machine_casing.json | 4 ++-- .../ragium/advancement/recipes/misc/black_dye_bucket.json | 4 ++-- .../recipes/misc/black_steel_ingot_from_block.json | 4 ++-- .../recipes/misc/black_steel_ingot_from_nugget.json | 4 ++-- .../recipes/misc/black_steel_nugget_from_ingot.json | 4 ++-- .../data/ragium/advancement/recipes/misc/blaze_rod.json | 8 ++++---- .../ragium/advancement/recipes/misc/blue_dye_bucket.json | 4 ++-- .../data/ragium/advancement/recipes/misc/breeze_rod.json | 8 ++++---- .../ragium/advancement/recipes/misc/brown_dye_bucket.json | 4 ++-- .../advancement/recipes/misc/charcoal_from_block.json | 4 ++-- .../advancement/recipes/misc/charcoal_from_tiny.json | 4 ++-- .../advancement/recipes/misc/coal_coke_from_block.json | 4 ++-- .../advancement/recipes/misc/coal_coke_from_tiny.json | 4 ++-- .../ragium/advancement/recipes/misc/coal_from_tiny.json | 4 ++-- .../data/ragium/advancement/recipes/misc/copper_gear.json | 4 ++-- .../ragium/advancement/recipes/misc/cyan_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/diamond_gear.json | 4 ++-- .../advancement/recipes/misc/echo_shard_from_block.json | 4 ++-- .../ragium/advancement/recipes/misc/emerald_gear.json | 4 ++-- .../data/ragium/advancement/recipes/misc/freezer.json | 4 ++-- .../data/ragium/advancement/recipes/misc/gold_gear.json | 4 ++-- .../ragium/advancement/recipes/misc/gray_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/green_dye_bucket.json | 4 ++-- .../data/ragium/advancement/recipes/misc/gunpowder.json | 8 ++++---- .../data/ragium/advancement/recipes/misc/iron_gear.json | 4 ++-- .../advancement/recipes/misc/light_blue_dye_bucket.json | 4 ++-- .../advancement/recipes/misc/light_gray_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/lime_dye_bucket.json | 4 ++-- .../advancement/recipes/misc/magenta_dye_bucket.json | 4 ++-- .../recipes/misc/mechanical_machine_parts.json | 4 ++-- .../data/ragium/advancement/recipes/misc/melter.json | 4 ++-- .../advancement/recipes/misc/netherite_gear_smithing.json | 4 ++-- .../recipes/misc/netherite_ingot_from_nugget.json | 4 ++-- .../recipes/misc/netherite_nugget_from_ingot.json | 4 ++-- .../advancement/recipes/misc/orange_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/pink_dye_bucket.json | 4 ++-- .../advancement/recipes/misc/purple_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/red_dye_bucket.json | 4 ++-- .../ragium/advancement/recipes/misc/sooty_iron_ingot.json | 8 ++++---- .../recipes/misc/sooty_iron_ingot_by_coke_dust.json | 4 ++-- .../recipes/misc/sooty_iron_ingot_by_dust.json | 8 ++++---- .../recipes/misc/sooty_iron_ingot_from_block.json | 4 ++-- .../recipes/misc/sooty_iron_ingot_from_coke.json | 4 ++-- .../recipes/misc/sooty_iron_ingot_from_nugget.json | 4 ++-- .../recipes/misc/sooty_iron_nugget_from_ingot.json | 4 ++-- .../recipes/misc/void_metal_ingot_from_block.json | 4 ++-- .../recipes/misc/void_metal_ingot_from_nugget.json | 4 ++-- .../recipes/misc/void_metal_nugget_from_ingot.json | 4 ++-- .../ragium/advancement/recipes/misc/white_dye_bucket.json | 4 ++-- .../advancement/recipes/misc/yellow_dye_bucket.json | 4 ++-- src/generated/resources/data/ragium/advancement/root.json | 4 ++-- .../kotlin/hiiragi283/lib/data/ExporterDataProvider.kt | 3 ++- 57 files changed, 124 insertions(+), 122 deletions(-) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 23c71e1e3..65e2584e6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -7,6 +7,7 @@ import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags @@ -640,7 +641,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec fun tag(prefix: HTTagPrefix, material: HTMaterialLike): Ingredient = tag(prefix.itemTagKey(material)) - fun getHasName(tagKey: TagKey<*>): String = "has_${tagKey.location().path}" + fun getHasName(tagKey: TagKey<*>): String = "has_${tagKey.location().debugPath}" fun getHasName(prefix: HTTagPrefix, material: HTMaterialLike): String = getHasName(prefix.itemTagKey(material)) diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json index 4e5217b4f..b387ef824 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/black_steel_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/black_steel": { + "has_ingots_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/black_steel" + "has_ingots_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json index 05f944ad0..979d259e4 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/echo_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/echo": { + "has_gems_echo": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/echo" + "has_gems_echo" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json index 0e965e2c3..b3c29abbb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/sooty_iron_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json index f19de50ae..e588bd61e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/building_blocks/void_metal_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/void_metal": { + "has_ingots_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/void_metal" + "has_ingots_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json index b3a217bcd..7e2402051 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json +++ b/src/generated/resources/data/ragium/advancement/recipes/decorations/machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json index b0c87324c..2306419c3 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/black": { + "has_dyes_black": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/black" + "has_dyes_black" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json index f13ca4cab..7157cb6d8 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/black_steel": { + "has_storage_blocks_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/black_steel" + "has_storage_blocks_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json index 367e1ad19..b9739fa11 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/black_steel": { + "has_nuggets_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/black_steel" + "has_nuggets_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json index 29ee8d955..0061812c5 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/black_steel_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/black_steel": { + "has_ingots_black_steel": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/black_steel" + "has_ingots_black_steel" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json b/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json index 7ff2c85af..75f302e35 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/blaze_rod.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/amethyst": { + "has_dusts_amethyst": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/sulfur": { + "has_dusts_sulfur": { "conditions": { "items": [ { @@ -41,9 +41,9 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/amethyst", + "has_dusts_amethyst", "has_magma_block", - "has_dusts/sulfur" + "has_dusts_sulfur" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json index dd8a5bb68..051ea5b29 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/blue_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/blue": { + "has_dyes_blue": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/blue" + "has_dyes_blue" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json b/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json index ff4ed5ba7..12993b2b5 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/breeze_rod.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/amethyst": { + "has_dusts_amethyst": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/niter": { + "has_dusts_niter": { "conditions": { "items": [ { @@ -41,9 +41,9 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/amethyst", + "has_dusts_amethyst", "has_ice", - "has_dusts/niter" + "has_dusts_niter" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json index 51aad756b..3b6c0e75e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/brown_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/brown": { + "has_dyes_brown": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/brown" + "has_dyes_brown" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json index 41cb1dafa..36b0c1fb7 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/charcoal": { + "has_storage_blocks_charcoal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/charcoal" + "has_storage_blocks_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json index 7e0f754ad..eaa4162d5 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/charcoal_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/charcoal": { + "has_tiny_charcoal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/charcoal" + "has_tiny_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json index 73adae76f..1c0f23dd1 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/coal_coke": { + "has_storage_blocks_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/coal_coke" + "has_storage_blocks_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json index 1a3116daf..dc9db4a49 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_coke_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal_coke": { + "has_tiny_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal_coke" + "has_tiny_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json index 899211a2e..40eb941ce 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/coal_from_tiny.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal": { + "has_tiny_coal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal" + "has_tiny_coal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json index 09ff5ea1a..7f147b9da 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/copper": { + "has_ingots_copper": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/copper" + "has_ingots_copper" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json index 782231bf5..2f1fa7662 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/cyan_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/cyan": { + "has_dyes_cyan": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/cyan" + "has_dyes_cyan" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json index e560c67a9..a2967e796 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/diamond_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/diamond": { + "has_gems_diamond": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/diamond" + "has_gems_diamond" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json index 401dbcdcc..f83d6f86c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/echo_shard_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/echo": { + "has_storage_blocks_echo": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/echo" + "has_storage_blocks_echo" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json index 7ea4a1143..7daf63ee2 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/emerald_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gems/emerald": { + "has_gems_emerald": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gems/emerald" + "has_gems_emerald" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json b/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json index 1390e0bce..d61f6f187 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/freezer.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_buckets/water": { + "has_buckets_water": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_buckets/water" + "has_buckets_water" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json index 046090ba4..5b573cb54 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/gold": { + "has_ingots_gold": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/gold" + "has_ingots_gold" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json index 3cba8264f..7439cefb9 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gray_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/gray": { + "has_dyes_gray": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/gray" + "has_dyes_gray" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json index 4e69f202a..c3bfd78c8 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/green_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/green": { + "has_dyes_green": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/green" + "has_dyes_green" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json index 7f1064ef2..b882881b4 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gunpowder.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/niter": { + "has_dusts_niter": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/sulfur": { + "has_dusts_sulfur": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/sulfur", - "has_dusts/niter" + "has_dusts_sulfur", + "has_dusts_niter" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json index 91dba3e17..8cb673fed 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_gear.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/iron": { + "has_ingots_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/iron" + "has_ingots_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json index 6ff0b2077..290bc44b4 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/light_blue_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/light_blue": { + "has_dyes_light_blue": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/light_blue" + "has_dyes_light_blue" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json index 02ce586f7..017b8ed74 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/light_gray_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/light_gray": { + "has_dyes_light_gray": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/light_gray" + "has_dyes_light_gray" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json index 6ccb17e04..77ec06bfe 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/lime_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/lime": { + "has_dyes_lime": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/lime" + "has_dyes_lime" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json index 2338adbd2..65368ed8c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/magenta_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/magenta": { + "has_dyes_magenta": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/magenta" + "has_dyes_magenta" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json index f4d0a60df..8d1273266 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/mechanical_machine_parts.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json index 874fbf211..5637ad97c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/melter.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_buckets/lava": { + "has_buckets_lava": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_buckets/lava" + "has_buckets_lava" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json index 6660280d9..38da40dfb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_gear_smithing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gears/diamond": { + "has_gears_diamond": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_gears/diamond" + "has_gears_diamond" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json index 256797467..c31ebcb9c 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/netherite": { + "has_nuggets_netherite": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/netherite" + "has_nuggets_netherite" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json index 8b625e0d9..92917400e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/netherite": { + "has_ingots_netherite": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/netherite" + "has_ingots_netherite" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json index f708a92dd..1e71b0609 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/orange_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/orange": { + "has_dyes_orange": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/orange" + "has_dyes_orange" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json index ad72a0d35..94f0f8641 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/pink_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/pink": { + "has_dyes_pink": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/pink" + "has_dyes_pink" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json index 3dcde9a1b..fc9bbaebf 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/purple_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/purple": { + "has_dyes_purple": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/purple" + "has_dyes_purple" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json index c400b3f10..74607c7dd 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/red_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/red": { + "has_dyes_red": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/red" + "has_dyes_red" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json index 8a8dab590..f029a3643 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/charcoal": { + "has_tiny_charcoal": { "conditions": { "items": [ { @@ -17,7 +17,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_tiny/coal": { + "has_tiny_coal": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal", - "has_tiny/charcoal" + "has_tiny_coal", + "has_tiny_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json index e17e190d3..3b766346f 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_coke_dust.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/coal_coke": { + "has_dusts_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/coal_coke" + "has_dusts_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json index cddd13436..49a27d08e 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_by_dust.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dusts/charcoal": { + "has_dusts_charcoal": { "conditions": { "items": [ { @@ -11,7 +11,7 @@ }, "trigger": "minecraft:inventory_changed" }, - "has_dusts/coal": { + "has_dusts_coal": { "conditions": { "items": [ { @@ -31,8 +31,8 @@ "requirements": [ [ "has_the_recipe", - "has_dusts/coal", - "has_dusts/charcoal" + "has_dusts_coal", + "has_dusts_charcoal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json index b5674b4c4..119ced503 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/sooty_iron": { + "has_storage_blocks_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/sooty_iron" + "has_storage_blocks_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json index 7e043bb95..95d828304 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_coke.json @@ -7,7 +7,7 @@ }, "trigger": "minecraft:recipe_unlocked" }, - "has_tiny/coal_coke": { + "has_tiny_coal_coke": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_tiny/coal_coke" + "has_tiny_coal_coke" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json index 271334e67..45011b78d 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/sooty_iron": { + "has_nuggets_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/sooty_iron" + "has_nuggets_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json index 0e16811aa..38689e5de 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/sooty_iron_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/sooty_iron": { + "has_ingots_sooty_iron": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/sooty_iron" + "has_ingots_sooty_iron" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json index 080bbf67d..f537e80d2 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_block.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_storage_blocks/void_metal": { + "has_storage_blocks_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_storage_blocks/void_metal" + "has_storage_blocks_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json index 6a9571848..73429ef77 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_ingot_from_nugget.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_nuggets/void_metal": { + "has_nuggets_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_nuggets/void_metal" + "has_nuggets_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json index e0bfd7a13..a95f3eab3 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/void_metal_nugget_from_ingot.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ingots/void_metal": { + "has_ingots_void_metal": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_ingots/void_metal" + "has_ingots_void_metal" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json index 4f91f4388..ddfd57dfb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/white_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/white": { + "has_dyes_white": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/white" + "has_dyes_white" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json b/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json index 50120b242..6e611d43f 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/yellow_dye_bucket.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dyes/yellow": { + "has_dyes_yellow": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_dyes/yellow" + "has_dyes_yellow" ] ], "rewards": { diff --git a/src/generated/resources/data/ragium/advancement/root.json b/src/generated/resources/data/ragium/advancement/root.json index b086a2748..5e132164a 100644 --- a/src/generated/resources/data/ragium/advancement/root.json +++ b/src/generated/resources/data/ragium/advancement/root.json @@ -1,6 +1,6 @@ { "criteria": { - "has_player_workstations/crafting_tables": { + "has_player_workstations_crafting_tables": { "conditions": { "items": [ { @@ -27,7 +27,7 @@ }, "requirements": [ [ - "has_player_workstations/crafting_tables" + "has_player_workstations_crafting_tables" ] ], "sends_telemetry_event": true diff --git a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt index 461046b9f..2bd8b0d81 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt @@ -7,6 +7,7 @@ import hiiragi283.lib.HTComparators import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.RegistryKey import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.toId import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.lib.tag.HTTagPrefix @@ -105,7 +106,7 @@ abstract class ExporterDataProvider( */ protected fun id(vararg path: String): Identifier = modId.toId(*path) - protected fun getHasName(id: Identifier): String = "has_${id.path}" + protected fun getHasName(id: Identifier): String = "has_${id.debugPath}" protected fun getHasName(value: HTValueWithId<*>): String = getHasName(value.idOrThrow) From 17952a4ea590c07bc60b7930b42014ded6d8b901 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 15:07:45 +0900 Subject: [PATCH 12/28] =?UTF-8?q?refactor:=20HTDefaultColor=20=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 6 +- .../HTMemoryDiscClientTooltipComponent.kt | 4 +- .../ragium/data/lang/RagiumLangProvider.kt | 10 +- .../recipe/RagiumMechanicalRecipeProvider.kt | 10 +- .../recipe/RagiumVanillaRecipeProvider.kt | 14 +-- .../lib/color/HTColoredCollection.kt | 95 ++++++++++++------- .../hiiragi283/lib/color/HTDefaultColor.kt | 88 ----------------- .../hiiragi283/lib/text/HTTranslation.kt | 6 +- src/lib/kotlin/hiiragi283/lib/text/Texts.kt | 8 -- .../ragium/api/util/HTStorageHelper.kt | 4 +- .../hiiragi283/ragium/common/RagiumCommon.kt | 4 +- .../ragium/common/fluid/HTDyedFluidType.kt | 6 +- .../ragium/common/fluid/RagiumFluids.kt | 4 +- .../common/transfer/holder/HTSlotInfo.kt | 16 ++-- 14 files changed, 102 insertions(+), 173 deletions(-) delete mode 100644 src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 2f56e489a..fd8600b65 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.client import hiiragi283.lib.HTConstants -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.event.HTRegisterWidgetRendererEvent import hiiragi283.lib.fluid.FluidStackTintSource import hiiragi283.lib.fluid.HTFluidModelRegister @@ -24,6 +23,7 @@ import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket import net.minecraft.client.resources.model.sprite.Material +import net.minecraft.world.item.DyeColor import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus import net.neoforged.fml.ModContainer @@ -62,10 +62,10 @@ data object RagiumClient : HTClientMod() { } override fun registerFluidModels(register: HTFluidModelRegister) { - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { register.register(RagiumFluids.DYES[color]) { dull() - color.color.let(::colorTint) + color.textureDiffuseColor.let(::colorTint) } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt b/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt index 50841b42d..09c7492f9 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/render/HTMemoryDiscClientTooltipComponent.kt @@ -1,9 +1,9 @@ package hiiragi283.ragium.client.render -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.text.Text import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent +import net.minecraft.ChatFormatting import net.minecraft.client.gui.Font import net.minecraft.client.gui.GuiGraphicsExtractor import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent @@ -13,7 +13,7 @@ import net.minecraft.world.item.ItemStack @JvmRecord data class HTMemoryDiscClientTooltipComponent private constructor( val data: ItemStack, - val text: Text = RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA.translateColored(HTDefaultColor.YELLOW, data) + val text: Text = RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA.translateColored(ChatFormatting.YELLOW, data) ) : ClientTooltipComponent { constructor(tooltip: HTMemoryDiscTooltipComponent) : this(tooltip.data.create()) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index e7dbb6c3b..de4b3542e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -1,7 +1,7 @@ package hiiragi283.ragium.data.lang import hiiragi283.lib.collection.forEach -import hiiragi283.lib.color.HTDefaultColor +import hiiragi283.lib.color.HTColoredCollection import hiiragi283.lib.data.lang.HTLangName import hiiragi283.lib.data.lang.HTLangPatternProvider import hiiragi283.lib.data.lang.HTLangProvider @@ -15,6 +15,7 @@ import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems +import net.minecraft.world.item.DyeColor interface RagiumLangProvider { fun addPatternTranslations(provider: HTLangProvider) { @@ -31,8 +32,11 @@ interface RagiumLangProvider { } // Fluid val dyePattern = HTLangPatternProvider("%s Dye", "%sの染料") - for (color: HTDefaultColor in HTDefaultColor.entries) { - provider.addFluid(RagiumFluids.DYES[color], dyePattern.translate(langType, color)) + for (color: DyeColor in DyeColor.entries) { + provider.addFluid( + RagiumFluids.DYES[color], + dyePattern.translate(langType, HTColoredCollection.TRANSLATED_NAMES[color]) + ) } // Item RagiumItems.MATERIAL_ITEMS diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 3d556898a..1f40c0d75 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.color.HTColoredCollection -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.HTRecipeProvider @@ -23,6 +22,7 @@ import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.Ingredient @@ -298,7 +298,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // XX Carpet -> XX Wool - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { RagiumRecipeBuilders.compressing { ingredient { items { +VanillaColoredCollections.CARPET[color] } @@ -440,7 +440,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS.get(HTItemPart.DUST, metal) ?: continue + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.INGOT, metal) } primary { +dust } @@ -699,7 +699,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } } ) - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { val builder: HTItemIngredientBuilder.() -> Unit = single[color] ?: continue RagiumRecipeBuilders.crushing { ingredient(builder) @@ -819,7 +819,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // XX Concrete Powder + Water -> XX Concrete - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { RagiumRecipeBuilders.filling { itemIngredient { items { +VanillaColoredCollections.CONCRETE_POWDER[color] } } fluidIngredient { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 65e2584e6..79914103e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.HTComparators -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.recipe.RecipeKey @@ -39,6 +38,7 @@ import net.minecraft.data.recipes.SingleItemRecipeBuilder import net.minecraft.data.recipes.SmithingTransformRecipeBuilder import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.item.ToolMaterial import net.minecraft.world.item.crafting.CookingBookCategory @@ -197,14 +197,14 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) // XX Dye Bucket - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { shapeless(RecipeCategory.MISC, RagiumFluids.DYES[color].bucketHolder) .requires(Tags.Items.BUCKETS_WATER) - .requires(color.dyesTag) - .requires(color.dyesTag) - .requires(color.dyesTag) - .requires(color.dyesTag) - .unlockedBy(getHasName(color.dyesTag), has(color.dyesTag)) + .requires(color.tag) + .requires(color.tag) + .requires(color.tag) + .requires(color.tag) + .unlockedBy(getHasName(color.tag), has(color.tag)) .save(output) } } diff --git a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt index ff9eeed4c..e42c21a64 100644 --- a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt +++ b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt @@ -1,5 +1,8 @@ package hiiragi283.lib.color +import hiiragi283.lib.data.lang.HTLangName +import net.minecraft.world.item.DyeColor + /** * 色のバリエーションを持つ要素をまとめるクラスです。 * @param T 要素のクラス @@ -26,46 +29,66 @@ data class HTColoredCollection( ) : AbstractCollection() { companion object { @JvmField - val VALUES: HTColoredCollection = HTColoredCollection( - HTDefaultColor.WHITE, - HTDefaultColor.ORANGE, - HTDefaultColor.MAGENTA, - HTDefaultColor.LIGHT_BLUE, - HTDefaultColor.YELLOW, - HTDefaultColor.LIME, - HTDefaultColor.PINK, - HTDefaultColor.GRAY, - HTDefaultColor.LIGHT_GRAY, - HTDefaultColor.CYAN, - HTDefaultColor.PURPLE, - HTDefaultColor.BLUE, - HTDefaultColor.BROWN, - HTDefaultColor.GREEN, - HTDefaultColor.RED, - HTDefaultColor.BLACK + val VALUES: HTColoredCollection = HTColoredCollection( + DyeColor.WHITE, + DyeColor.ORANGE, + DyeColor.MAGENTA, + DyeColor.LIGHT_BLUE, + DyeColor.YELLOW, + DyeColor.LIME, + DyeColor.PINK, + DyeColor.GRAY, + DyeColor.LIGHT_GRAY, + DyeColor.CYAN, + DyeColor.PURPLE, + DyeColor.BLUE, + DyeColor.BROWN, + DyeColor.GREEN, + DyeColor.RED, + DyeColor.BLACK + ) + + @JvmField + val TRANSLATED_NAMES: HTColoredCollection = HTColoredCollection( + HTLangName("White", "白色"), + HTLangName("Orange", "橙色"), + HTLangName("Magenta", "赤紫色"), + HTLangName("Light Blue", "空色"), + HTLangName("Yellow", "黄色"), + HTLangName("Lime", "黄緑色"), + HTLangName("Pink", "桃色"), + HTLangName("Gray", "灰色"), + HTLangName("Light Gray", "薄灰色"), + HTLangName("Cyan", "青緑色"), + HTLangName("Purple", "紫色"), + HTLangName("Blue", "青色"), + HTLangName("Brown", "茶色"), + HTLangName("Green", "緑色"), + HTLangName("Red", "赤色"), + HTLangName("Black", "黒色") ) } - operator fun get(color: HTDefaultColor): T = when (color) { - HTDefaultColor.WHITE -> white - HTDefaultColor.ORANGE -> orange - HTDefaultColor.MAGENTA -> magenta - HTDefaultColor.LIGHT_BLUE -> lightBlue - HTDefaultColor.YELLOW -> yellow - HTDefaultColor.LIME -> lime - HTDefaultColor.PINK -> pink - HTDefaultColor.GRAY -> gray - HTDefaultColor.LIGHT_GRAY -> lightGray - HTDefaultColor.CYAN -> cyan - HTDefaultColor.PURPLE -> purple - HTDefaultColor.BLUE -> blue - HTDefaultColor.BROWN -> brown - HTDefaultColor.GREEN -> green - HTDefaultColor.RED -> red - HTDefaultColor.BLACK -> black + operator fun get(color: DyeColor): T = when (color) { + DyeColor.WHITE -> white + DyeColor.ORANGE -> orange + DyeColor.MAGENTA -> magenta + DyeColor.LIGHT_BLUE -> lightBlue + DyeColor.YELLOW -> yellow + DyeColor.LIME -> lime + DyeColor.PINK -> pink + DyeColor.GRAY -> gray + DyeColor.LIGHT_GRAY -> lightGray + DyeColor.CYAN -> cyan + DyeColor.PURPLE -> purple + DyeColor.BLUE -> blue + DyeColor.BROWN -> brown + DyeColor.GREEN -> green + DyeColor.RED -> red + DyeColor.BLACK -> black } - fun asSequence(): Sequence = HTDefaultColor.entries.asSequence().map(::get) + fun asSequence(): Sequence = DyeColor.entries.asSequence().map(::get) override val size: Int = 16 @@ -117,5 +140,5 @@ data class HTColoredCollection( * @author Hiiragi Tsubasa * @since 26.1.0 */ -inline fun HTColoredCollection(init: (color: HTDefaultColor) -> T): HTColoredCollection = +inline fun HTColoredCollection(init: (color: DyeColor) -> T): HTColoredCollection = HTColoredCollection.VALUES.map(init) diff --git a/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt b/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt deleted file mode 100644 index 4fe423dc4..000000000 --- a/src/lib/kotlin/hiiragi283/lib/color/HTDefaultColor.kt +++ /dev/null @@ -1,88 +0,0 @@ -package hiiragi283.lib.color - -import com.mojang.serialization.Codec -import hiiragi283.lib.data.lang.HTLangName -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import io.netty.buffer.ByteBuf -import net.minecraft.ChatFormatting -import net.minecraft.network.chat.TextColor -import net.minecraft.network.codec.StreamCodec -import net.minecraft.tags.TagKey -import net.minecraft.util.ARGB -import net.minecraft.util.StringRepresentable -import net.minecraft.world.item.DyeColor -import net.minecraft.world.item.Item - -/** - * Minecraftで使用される様々な「色」をまとめたクラスです。 - * - * 参考 : [Mekanism - EnumColor](https://github.com/mekanism/Mekanism/blob/26.1/src/api/java/mekanism/api/text/EnumColor.java) - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -enum class HTDefaultColor( - val color: Int, - val dyeColor: DyeColor, - val textColor: TextColor, - enName: String, - jaName: String -) : StringRepresentable, - HTLangName by HTLangName(enName, jaName) { - WHITE(ChatFormatting.WHITE, DyeColor.WHITE, "White", "白色"), - ORANGE(intArrayOf(255, 161, 96), DyeColor.ORANGE, "Orange", "橙色"), - MAGENTA(intArrayOf(213, 94, 203), DyeColor.MAGENTA, "Magenta", "赤紫色"), - LIGHT_BLUE(ChatFormatting.AQUA, DyeColor.LIGHT_BLUE, "Light Blue", "空色"), - YELLOW(ChatFormatting.YELLOW, DyeColor.YELLOW, "Yellow", "黄色"), - LIME(ChatFormatting.GREEN, DyeColor.LIME, "Lime", "黄緑色"), - PINK(ChatFormatting.LIGHT_PURPLE, DyeColor.PINK, "Pink", "桃色"), - GRAY(ChatFormatting.DARK_GRAY, DyeColor.GRAY, "Gray", "灰色"), - LIGHT_GRAY(ChatFormatting.GRAY, DyeColor.LIGHT_GRAY, "Light Gray", "薄灰色"), - CYAN(ChatFormatting.DARK_AQUA, DyeColor.CYAN, "Cyan", "青緑色"), - PURPLE(intArrayOf(164, 96, 217), DyeColor.PURPLE, "Purple", "紫色"), - BLUE(ChatFormatting.BLUE, DyeColor.BLUE, "Blue", "青色"), - BROWN(intArrayOf(161, 118, 73), DyeColor.BROWN, "Brown", "茶色"), - GREEN(intArrayOf(89, 193, 95), DyeColor.GREEN, "Green", "緑色"), - RED(ChatFormatting.RED, DyeColor.RED, "Red", "赤色"), - BLACK(ChatFormatting.BLACK, DyeColor.BLACK, "Black", "黒色") - ; - - constructor(color: ChatFormatting, dyeColor: DyeColor, enName: String, jaName: String) : this( - dyeColor.textureDiffuseColor, - dyeColor, - TextColor.fromLegacyFormat(color) ?: error("$color is not color format"), - enName, - jaName - ) - - constructor(color: Int, dyeColor: DyeColor, enName: String, jaName: String) : this( - color, - dyeColor, - TextColor.fromRgb(color), - enName, - jaName - ) - - constructor(color: IntArray, dyeColor: DyeColor, enName: String, jaName: String) : this( - ARGB.color(color[0], color[1], color[2]), - dyeColor, - enName, - jaName - ) - - companion object { - @JvmField - val CODEC: Codec = HTCodecs.stringEnum(HTDefaultColor::getSerializedName) - - @JvmField - val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() - - @JvmStatic - fun fromDye(dyeColor: DyeColor): HTDefaultColor = entries.first { it.dyeColor == dyeColor } - } - - val dyesTag: TagKey = dyeColor.tag - val dyedTag: TagKey = dyeColor.dyedTag - - override fun getSerializedName(): String = name.lowercase() -} diff --git a/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt b/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt index 5605f4ba8..a0e09285b 100644 --- a/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt +++ b/src/lib/kotlin/hiiragi283/lib/text/HTTranslation.kt @@ -1,6 +1,6 @@ package hiiragi283.lib.text -import hiiragi283.lib.color.HTDefaultColor +import net.minecraft.ChatFormatting /** * 翻訳を保持するインターフェースです。 @@ -24,11 +24,11 @@ interface HTTranslation : HTHasTranslationKey { /** * [color]で着色された[テキスト][Text]を返します。 */ - fun translateColored(color: HTDefaultColor): MutableText = translate().withStyle(color) + fun translateColored(color: ChatFormatting): MutableText = translate().withStyle(color) /** * [color]で着色された[テキスト][Text]を返します。 * @param args テキストの引数 */ - fun translateColored(color: HTDefaultColor, vararg args: Any?): MutableText = translate(*args).withStyle(color) + fun translateColored(color: ChatFormatting, vararg args: Any?): MutableText = translate(*args).withStyle(color) } diff --git a/src/lib/kotlin/hiiragi283/lib/text/Texts.kt b/src/lib/kotlin/hiiragi283/lib/text/Texts.kt index 6e6ea5cf9..98b006613 100644 --- a/src/lib/kotlin/hiiragi283/lib/text/Texts.kt +++ b/src/lib/kotlin/hiiragi283/lib/text/Texts.kt @@ -1,6 +1,5 @@ package hiiragi283.lib.text -import hiiragi283.lib.color.HTDefaultColor import net.minecraft.core.Direction import net.minecraft.network.chat.Component import net.minecraft.network.chat.MutableComponent @@ -88,10 +87,3 @@ fun levelText(key: ResourceKey): MutableText { * @since 26.1.0 */ fun MutableText.withStyle(color: TextColor): MutableText = this.withStyle { style: Style -> style.withColor(color) } - -/** - * 指定した[色][color]を適応します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun MutableText.withStyle(color: HTDefaultColor): MutableText = this.withStyle(color.textColor) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt index 29aec4d7e..452ca5fcf 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt @@ -2,13 +2,11 @@ package hiiragi283.ragium.api.util import hiiragi283.lib.capability.HTEnergyCapabilities import hiiragi283.lib.capability.HTFluidCapabilities -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.item.ItemStack import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.HTTextUtil import hiiragi283.lib.text.Text -import hiiragi283.lib.text.withStyle import hiiragi283.lib.transfer.HTResourceView import hiiragi283.lib.transfer.energy.HTEnergyHandler import hiiragi283.lib.util.fixedFraction @@ -186,7 +184,7 @@ data object HTStorageHelper { .identifier() .namespace .let(HTTextUtil::getModNameText) - .withStyle(HTDefaultColor.BLUE) + .withStyle(ChatFormatting.BLUE) .withStyle(ChatFormatting.ITALIC) .let(consumer::accept) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index dda71c8e0..549690118 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -4,7 +4,6 @@ import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.collection.asSequence import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.getOrPut -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.item.alchemy.HTPotionFluidManager import hiiragi283.lib.recipe.RecipeKey @@ -28,6 +27,7 @@ import net.minecraft.core.HolderSet import net.minecraft.core.RegistryAccess import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.resources.ResourceKey +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionBrewing import net.minecraft.world.item.crafting.Ingredient @@ -56,7 +56,7 @@ internal data object RagiumCommon { private fun initFluidInteractions() { // Convert lava source/flow into concrete by dye liquid // FlowingFluid#isRandomlyTicking を true に - for (color: HTDefaultColor in HTDefaultColor.entries) { + for (color: DyeColor in DyeColor.entries) { FluidInteractionRegistry.addInteraction( NeoForgeMod.LAVA_TYPE.value(), FluidInteractionRegistry.InteractionInformation( diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt index 4d0875091..ad2075656 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTDyedFluidType.kt @@ -1,19 +1,19 @@ package hiiragi283.ragium.common.fluid -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.fluid.HTFluidType import hiiragi283.lib.item.HTItemDropHelper import net.minecraft.core.BlockPos import net.minecraft.network.chat.TextColor import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.ItemStack import net.minecraft.world.level.Level import net.minecraft.world.phys.Vec3 import net.neoforged.neoforge.fluids.FluidStack -class HTDyedFluidType(private val color: HTDefaultColor, properties: Properties) : HTFluidType(properties) { - override fun getNameColor(stack: FluidStack): TextColor = color.textColor +class HTDyedFluidType(private val color: DyeColor, properties: Properties) : HTFluidType(properties) { + override fun getNameColor(stack: FluidStack): TextColor = TextColor.fromRgb(color.textColor) override fun onVaporize(entity: LivingEntity?, level: Level, pos: BlockPos, stack: FluidStack) { super.onVaporize(entity, level, pos, stack) diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index 837068185..47bba7a2e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.common.fluid import hiiragi283.lib.HTConstants import hiiragi283.lib.color.HTColoredCollection -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTFluidContentRegister import hiiragi283.lib.resource.toId @@ -15,6 +14,7 @@ import hiiragi283.ragium.common.item.component.RagiumConsumables import net.minecraft.core.component.DataComponents import net.minecraft.sounds.SoundEvent import net.minecraft.sounds.SoundEvents +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.level.pathfinder.PathType import net.neoforged.bus.api.IEventBus @@ -75,7 +75,7 @@ data object RagiumFluids { } @JvmField - val DYES: HTColoredCollection = HTColoredCollection { color: HTDefaultColor -> + val DYES: HTColoredCollection = HTColoredCollection { color: DyeColor -> val name: String = color.serializedName REGISTER.registerFlowing("${name}_dye") { properties = liquid() diff --git a/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt b/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt index 8e2eb5a02..fe927fc0a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/transfer/holder/HTSlotInfo.kt @@ -1,18 +1,18 @@ package hiiragi283.ragium.common.transfer.holder import com.mojang.serialization.Codec -import hiiragi283.lib.color.HTDefaultColor import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.ChatFormatting import net.minecraft.util.StringRepresentable -enum class HTSlotInfo(val canInsert: Boolean, val canExtract: Boolean, val color: HTDefaultColor) : +enum class HTSlotInfo(val canInsert: Boolean, val canExtract: Boolean, val color: ChatFormatting) : StringRepresentable { - BOTH(true, true, HTDefaultColor.PURPLE), - INPUT(true, false, HTDefaultColor.RED), - OUTPUT(false, true, HTDefaultColor.LIGHT_BLUE), - EXTRA_INPUT(true, false, HTDefaultColor.YELLOW), - EXTRA_OUTPUT(false, true, HTDefaultColor.GREEN), - NONE(false, false, HTDefaultColor.GRAY) + BOTH(true, true, ChatFormatting.LIGHT_PURPLE), + INPUT(true, false, ChatFormatting.RED), + OUTPUT(false, true, ChatFormatting.BLUE), + EXTRA_INPUT(true, false, ChatFormatting.YELLOW), + EXTRA_OUTPUT(false, true, ChatFormatting.GREEN), + NONE(false, false, ChatFormatting.GRAY) ; companion object { From 078479a721e7ccd6d88d7ce3fe2cd9d638d1b950 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 15:24:57 +0900 Subject: [PATCH 13/28] =?UTF-8?q?feat:=20=E6=AD=AF=E8=BB=8A=E3=82=92?= =?UTF-8?q?=E7=B2=89=E7=A0=95=E3=81=99=E3=82=8B=E3=83=AC=E3=82=B7=E3=83=94?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- .../data/recipe/RagiumMechanicalRecipeProvider.kt | 11 +++++++++++ .../recipe/crushing/copper_dust_from_gear.json | 12 ++++++++++++ .../recipe/crushing/diamond_dust_from_gear.json | 12 ++++++++++++ .../recipe/crushing/emerald_dust_from_gear.json | 12 ++++++++++++ .../ragium/recipe/crushing/gold_dust_from_gear.json | 12 ++++++++++++ .../ragium/recipe/crushing/iron_dust_from_gear.json | 12 ++++++++++++ .../recipe/crushing/netherite_dust_from_gear.json | 12 ++++++++++++ .../ragium/recipe/crushing/wood_dust_from_gear.json | 12 ++++++++++++ .../kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt | 6 ------ .../kotlin/hiiragi283/ragium/api/material/HTPart.kt | 1 - 11 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json diff --git a/build.gradle.kts b/build.gradle.kts index 27ee13718..389babba5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -167,7 +167,7 @@ neoForge { sourceSet = clientModule jvmArgument("-Dmixin.debug.export=true") - devLogin = false + devLogin = true } register("server") { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 1f40c0d75..33570d167 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -468,6 +468,17 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable ingredient { +holderSet(Tags.Items.OBSIDIANS_NORMAL) } primary { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.OBSIDIAN) } }.save(exporter) + // Gear -> Dust + for (material: RagiumMaterial in RagiumMaterial.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, material] ?: continue + if (RagiumItems.MATERIAL_ITEMS.contains(HTItemPart.GEAR, material)) { + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.GEAR, material) } + primary { +dust } + recipeId suffix "_from_gear" + }.save(exporter) + } + } } private fun crushWood() { diff --git a/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json new file mode 100644 index 000000000..31517ccd1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/copper" + }, + "primary_result": { + "count": 1, + "id": "ragium:copper_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json new file mode 100644 index 000000000..1d0cb952b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/diamond" + }, + "primary_result": { + "count": 1, + "id": "ragium:diamond_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json new file mode 100644 index 000000000..4acf90fae --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/emerald" + }, + "primary_result": { + "count": 1, + "id": "ragium:emerald_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json new file mode 100644 index 000000000..11768d875 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/gold" + }, + "primary_result": { + "count": 1, + "id": "ragium:gold_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json new file mode 100644 index 000000000..7276971e8 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/iron" + }, + "primary_result": { + "count": 1, + "id": "ragium:iron_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json new file mode 100644 index 000000000..1e8458f20 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/netherite" + }, + "primary_result": { + "count": 1, + "id": "ragium:netherite_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json new file mode 100644 index 000000000..79282068b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:gears/wood" + }, + "primary_result": { + "count": 1, + "id": "ragium:wood_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt b/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt index 6c0642a50..44faa2196 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/CommonTagPrefixes.kt @@ -34,15 +34,9 @@ data object CommonTagPrefixes { @JvmField val NUGGET = HTTagPrefix("nuggets", "nuggets/%s") - @JvmField - val PLATE = HTTagPrefix("plates", "plates/%s") - @JvmField val RAW_MATERIALS = HTTagPrefix("raw_materials", "raw_materials/%s") - @JvmField - val ROD = HTTagPrefix("rods", "rods/%s") - @JvmField val TINY = HTTagPrefix("tiny", "tiny/%s") } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt index b877015af..129f5ea40 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/HTPart.kt @@ -88,7 +88,6 @@ enum class HTItemPart( GEM("%s", CommonTagPrefixes.GEM, HTLangPatternProvider.IDENTITY), INGOT("%s_ingot", CommonTagPrefixes.INGOT, "%s Ingot", "%sインゴット"), NUGGET("%s_nugget", CommonTagPrefixes.NUGGET, "%s Nugget", "%sナゲット"), - PLATE("%s_plate", CommonTagPrefixes.PLATE, "%s Plate", "%sの板"), RAW("raw_%s", CommonTagPrefixes.RAW_MATERIALS, "Raw %s", "%sの原石"), TINY("tiny_%s", CommonTagPrefixes.TINY, "Tiny %s", "小さな%s") ; From 0625ca908f48dd5b71dde3486ffacbc5d85b8a47 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 16:03:08 +0900 Subject: [PATCH 14/28] =?UTF-8?q?feat:=20Smelter=E3=82=82=E3=82=BB?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=81=AE=E5=89=8D=E5=BE=8C=E3=81=A7=E6=9C=80?= =?UTF-8?q?=E5=BE=8C=E3=81=AE=E3=83=AC=E3=82=B7=E3=83=94=E3=82=92=E8=A8=98?= =?UTF-8?q?=E6=86=B6=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/recipe/lookup/HTRecipeCache.kt | 2 + .../lib/recipe/lookup/HTVanillaRecipeCache.kt | 59 +++++++++++++++++++ .../entity/machine/HTSmelterBlockEntity.kt | 43 ++++++++++---- 3 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt index f1cf5a800..95a7e4004 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt @@ -21,6 +21,8 @@ import net.neoforged.neoforge.common.util.ValueIOSerializable * @param INPUT レシピの入力となるクラス * @param RECIPE 提供するレシピのクラス * @param lookup レシピの提供元 + * @author Hiiragi Tsubasa + * @since 26.1.0 */ class HTRecipeCache>( private val lookup: HTRecipeLookup diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt new file mode 100644 index 000000000..baec6483d --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTVanillaRecipeCache.kt @@ -0,0 +1,59 @@ +package hiiragi283.lib.recipe.lookup + +import hiiragi283.lib.HTConstants +import hiiragi283.lib.recipe.RecipeKey +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.item.crafting.Recipe +import net.minecraft.world.item.crafting.RecipeHolder +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeManager +import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.common.util.ValueIOSerializable +import java.util.Optional +import kotlin.jvm.optionals.getOrNull + +/** + * [RecipeType]に基づいて,取得したレシピをキャッシュするクラスです。 + * @param INPUT レシピの入力となるクラス + * @param RECIPE 提供するレシピのクラス + * @param recipeType レシピの種類 + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +class HTVanillaRecipeCache>(val recipeType: RecipeType) : + ValueIOSerializable { + private var lastRecipe: Either>? = null + + /** + * [RecipeHolder]を取得します。 + * @param input レシピの入力 + * @param level レシピ取得時のレベル + * @return [input]に一致する最初のレシピ + */ + fun findFirstHolder(input: INPUT, level: ServerLevel): RecipeHolder? { + if (input.isEmpty) return null + val recipeManager: RecipeManager = level.recipeAccess() + val foundRecipe: Optional> = lastRecipe?.fold( + { key: RecipeKey -> recipeManager.getRecipeFor(recipeType, input, level, key) }, + { holder: RecipeHolder -> recipeManager.getRecipeFor(recipeType, input, level, holder) } + ) ?: recipeManager.getRecipeFor(recipeType, input, level) + foundRecipe.ifPresentOrElse({ lastRecipe = Either.Right(it) }, { lastRecipe = null }) + return foundRecipe.getOrNull() + } + + override fun serialize(output: ValueOutput) { + output.storeNullable(HTConstants.ID, Recipe.KEY_CODEC, getRecipeKey()) + } + + override fun deserialize(input: ValueInput) { + input.read(HTConstants.ID, Recipe.KEY_CODEC).ifPresent { lastRecipe = Either.Left(it) } + } + + private fun getRecipeKey(): RecipeKey? = lastRecipe?.map(RecipeHolder<*>::id)?.unwrap() + + override fun toString(): String = "HTVanillaRecipeCache(recipeType=$recipeType, lastRecipe=${getRecipeKey()})" +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt index 3b5664eb3..702301467 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder @@ -8,6 +9,7 @@ import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.handler.HTInputSlot import hiiragi283.lib.recipe.handler.HTOutputSlot import hiiragi283.lib.recipe.ingredient.HTIngredientHelper +import hiiragi283.lib.recipe.lookup.HTVanillaRecipeCache import hiiragi283.lib.transfer.item.HTBasicItemSlot import hiiragi283.lib.transfer.useTransaction import hiiragi283.ragium.api.RagiumConfig @@ -26,11 +28,36 @@ import net.minecraft.world.item.crafting.AbstractCookingRecipe import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput import net.neoforged.neoforge.transfer.transaction.Transaction -import kotlin.jvm.optionals.getOrNull class HTSmelterBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.SMELTER.get(), pos, state) { + private val smeltingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.SMELTING) + private val blastingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.BLASTING) + private val smokingCache: HTVanillaRecipeCache = + HTVanillaRecipeCache(RecipeType.SMOKING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + val child: ValueOutput = output.child(HTConstants.LAST_RECIPE) + child.putChild("smelting", smeltingCache) + child.putChild("blasting", blastingCache) + child.putChild("smoking", smokingCache) + } + + override fun readUpdateTag(input: ValueInput) { + super.readUpdateTag(input) + input.child(HTConstants.LAST_RECIPE).ifPresent { child: ValueInput -> + child.readChild("smelting", smeltingCache) + child.readChild("blasting", blastingCache) + child.readChild("smoking", smokingCache) + } + } + override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler() { @@ -45,16 +72,12 @@ class HTSmelterBlockEntity(pos: BlockPos, state: BlockState) : override fun findRecipe(level: ServerLevel, input: SingleRecipeInput): HTItemToItemRecipe? { val stackIn: ItemStack = typeSlot.getStackCopy() - val recipeType = when { - stackIn.`is`(Items.BLAST_FURNACE) -> RecipeType.BLASTING - stackIn.`is`(Items.SMOKER) -> RecipeType.SMOKING - else -> RecipeType.SMELTING + val cache: HTVanillaRecipeCache = when { + stackIn.`is`(Items.BLAST_FURNACE) -> blastingCache + stackIn.`is`(Items.SMOKER) -> smokingCache + else -> smeltingCache } - return level.recipeAccess() - .getRecipeFor(recipeType, input, level) - .map { it.value() } - .map(::wrapRecipe) - .getOrNull() + return cache.findFirstHolder(input, level)?.value()?.let(::wrapRecipe) } private fun wrapRecipe(recipe: AbstractCookingRecipe): HTItemToItemRecipe = object : HTItemToItemRecipe { From 66a06ab86de92056f1cec89c45ac384735d3df1e Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 16:29:49 +0900 Subject: [PATCH 15/28] =?UTF-8?q?refactor:=20=E6=A9=9F=E6=A2=B0=E3=83=96?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=82=AF=E3=81=AE=E3=83=A2=E3=83=87=E3=83=AB?= =?UTF-8?q?=E6=95=B0=E3=82=92=E5=89=8A=E6=B8=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/model/RagiumModelProvider.kt | 49 ++++++++---------- .../assets/ragium/blockstates/assembler.json | 16 +++--- .../assets/ragium/blockstates/brewery.json | 16 +++--- .../ragium/blockstates/chemical_bath.json | 16 +++--- .../ragium/blockstates/chemical_reactor.json | 16 +++--- .../assets/ragium/blockstates/compressor.json | 16 +++--- .../assets/ragium/blockstates/crusher.json | 16 +++--- .../ragium/blockstates/cutting_machine.json | 16 +++--- .../ragium/blockstates/electrolyzer.json | 16 +++--- .../assets/ragium/blockstates/freezer.json | 16 +++--- .../assets/ragium/blockstates/melter.json | 16 +++--- .../assets/ragium/blockstates/mixer.json | 16 +++--- .../assets/ragium/blockstates/planter.json | 16 +++--- .../assets/ragium/blockstates/pyrolyzer.json | 16 +++--- .../assets/ragium/blockstates/refinery.json | 16 +++--- .../assets/ragium/blockstates/scanner.json | 16 +++--- .../assets/ragium/blockstates/smelter.json | 16 +++--- .../models/block/arcane_machine_casing.json | 2 +- .../assets/ragium/models/block/assembler.json | 2 +- .../models/block/bio_machine_casing.json | 2 +- .../assets/ragium/models/block/brewery.json | 2 +- .../ragium/models/block/chemical_bath.json | 2 +- .../models/block/chemical_bath_active.json | 8 --- .../models/block/chemical_machine_casing.json | 2 +- .../ragium/models/block/chemical_reactor.json | 2 +- .../models/block/chemical_reactor_active.json | 8 --- .../ragium/models/block/compressor.json | 2 +- .../models/block/compressor_active.json | 8 --- .../assets/ragium/models/block/crusher.json | 2 +- .../ragium/models/block/crusher_active.json | 8 --- .../ragium/models/block/cutting_machine.json | 2 +- .../models/block/cutting_machine_active.json | 8 --- .../ragium/models/block/electrolyzer.json | 2 +- .../models/block/electrolyzer_active.json | 8 --- .../block/electronics_machine_casing.json | 2 +- .../assets/ragium/models/block/freezer.json | 2 +- .../ragium/models/block/freezer_active.json | 8 --- .../models/block/heat_machine_casing.json | 2 +- .../arcane.json} | 4 +- .../{melter_active.json => machine/bio.json} | 4 +- .../chemical.json} | 4 +- .../models/block/machine/electronics.json | 8 +++ .../heat.json} | 4 +- .../mechanical.json} | 4 +- .../block/mechanical_machine_casing.json | 2 +- .../assets/ragium/models/block/melter.json | 2 +- .../assets/ragium/models/block/mixer.json | 2 +- .../assets/ragium/models/block/planter.json | 2 +- .../assets/ragium/models/block/pyrolyzer.json | 2 +- .../ragium/models/block/pyrolyzer_active.json | 8 --- .../assets/ragium/models/block/refinery.json | 2 +- .../ragium/models/block/refinery_active.json | 8 --- .../assets/ragium/models/block/scanner.json | 2 +- .../ragium/models/block/scanner_active.json | 8 --- .../assets/ragium/models/block/smelter.json | 2 +- .../ragium/models/block/smelter_active.json | 8 --- .../arcane.png => machine/arcane_side.png} | Bin .../bio.png => machine/bio_side.png} | Bin .../chemical_side.png} | Bin .../electronics_side.png} | Bin .../textures/block/machine/heat_front.png | Bin 0 -> 212 bytes .../heat.png => machine/heat_side.png} | Bin .../block/machine/mechanical_front.png | Bin 0 -> 209 bytes .../mechanical_side.png} | Bin 64 files changed, 190 insertions(+), 275 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/models/block/chemical_bath_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/compressor_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/crusher_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cutting_machine_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/electrolyzer_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/freezer_active.json rename src/generated/resources/assets/ragium/models/block/{planter_active.json => machine/arcane.json} (51%) rename src/generated/resources/assets/ragium/models/block/{melter_active.json => machine/bio.json} (52%) rename src/generated/resources/assets/ragium/models/block/{mixer_active.json => machine/chemical.json} (50%) create mode 100644 src/generated/resources/assets/ragium/models/block/machine/electronics.json rename src/generated/resources/assets/ragium/models/block/{brewery_active.json => machine/heat.json} (52%) rename src/generated/resources/assets/ragium/models/block/{assembler_active.json => machine/mechanical.json} (50%) delete mode 100644 src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/refinery_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/scanner_active.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smelter_active.json rename src/main/resources/assets/ragium/textures/block/{machine_casing/arcane.png => machine/arcane_side.png} (100%) rename src/main/resources/assets/ragium/textures/block/{machine_casing/bio.png => machine/bio_side.png} (100%) rename src/main/resources/assets/ragium/textures/block/{machine_casing/chemical.png => machine/chemical_side.png} (100%) rename src/main/resources/assets/ragium/textures/block/{machine_casing/electronics.png => machine/electronics_side.png} (100%) create mode 100644 src/main/resources/assets/ragium/textures/block/machine/heat_front.png rename src/main/resources/assets/ragium/textures/block/{machine_casing/heat.png => machine/heat_side.png} (100%) create mode 100644 src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png rename src/main/resources/assets/ragium/textures/block/{machine_casing/mechanical.png => machine/mechanical_side.png} (100%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 58fd35603..42ceec821 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -16,7 +16,6 @@ import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.client.data.models.BlockModelGenerators import net.minecraft.client.data.models.ItemModelGenerators -import net.minecraft.client.data.models.MultiVariant import net.minecraft.client.data.models.blockstates.MultiVariantGenerator import net.minecraft.client.data.models.blockstates.PropertyDispatch import net.minecraft.client.data.models.model.ModelTemplates @@ -71,20 +70,26 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP }.forEach { generators.createTrivialCube(it.block.getOrThrow()) } // Machine + val inactiveModels: Map = HTMachineType.entries + .associateWith { machineType: HTMachineType -> + val blockId: Identifier = RagiumAPI.id(HTConstants.BLOCK, "machine", machineType.materialName) + ModelTemplates.CUBE_ORIENTABLE.create( + blockId, + textureMapping(machineType).put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), + generators.modelOutput + ) + } for ((machineType: HTMachineType, blockItem: HTSimpleBlockItemWithKey) in RagiumBlocks.MACHINES.flatEntries) { val block: HTValueWithId = blockItem.block - val inactiveModel: MultiVariant = BlockModelGenerators.plainVariant( - machineModel(generators, machineType, block, false) - ) - val activeModel: MultiVariant = BlockModelGenerators.plainVariant( - machineModel(generators, machineType, block, true) - ) generators.blockStateOutput.accept( MultiVariantGenerator.dispatch(block.getOrThrow()) .with( PropertyDispatch.initial(HTMachineBlock.IS_ACTIVE) - .select(false, inactiveModel) - .select(true, activeModel) + .select(false, BlockModelGenerators.plainVariant(inactiveModels[machineType]!!)) + .select( + true, + BlockModelGenerators.plainVariant(machineModel(generators, machineType, block)) + ) ).with(BlockModelGenerators.ROTATION_HORIZONTAL_FACING) ) } @@ -104,31 +109,21 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP private fun machineModel( generators: BlockModelGenerators, machineType: HTMachineType, - block: HTValueWithId, - isActive: Boolean + block: HTValueWithId ): Identifier { val blockId: Identifier = block.idOrThrow.blockId - val mapping: TextureMapping = textureMapping(machineType) - return when (isActive) { - true -> ModelTemplates.CUBE_ORIENTABLE.create( - blockId.withSuffix("_active"), - mapping.put(TextureSlot.FRONT, Material(blockId.withSuffix("_front_active"))), - generators.modelOutput - ) - - false -> ModelTemplates.CUBE_ORIENTABLE.createBlock( - block, - mapping.put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), - generators.modelOutput - ) - } + return ModelTemplates.CUBE_ORIENTABLE.create( + blockId, + textureMapping(machineType).put(TextureSlot.FRONT, Material(blockId.withSuffix("_front"))), + generators.modelOutput + ) } private fun textureMapping(machineType: HTMachineType): TextureMapping = TextureMapping() - .put(TextureSlot.TOP, Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing"))) + .put(TextureSlot.TOP, Material(RagiumBlocks.MACHINE_CASING.block.idOrThrow.blockId)) .put( TextureSlot.SIDE, - Material(RagiumAPI.id(HTConstants.BLOCK, "machine_casing", machineType.materialName)) + Material(RagiumAPI.id(HTConstants.BLOCK, "machine", "${machineType.materialName}_side")) ) private fun registerItemModels(generators: ItemModelGenerators) { diff --git a/src/generated/resources/assets/ragium/blockstates/assembler.json b/src/generated/resources/assets/ragium/blockstates/assembler.json index 85e1da992..71e1bbae0 100644 --- a/src/generated/resources/assets/ragium/blockstates/assembler.json +++ b/src/generated/resources/assets/ragium/blockstates/assembler.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/assembler" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/assembler_active" + "model": "ragium:block/assembler" }, "facing=south,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/assembler", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/assembler_active", + "model": "ragium:block/assembler", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/brewery.json b/src/generated/resources/assets/ragium/blockstates/brewery.json index 4cba191bc..ec8a09097 100644 --- a/src/generated/resources/assets/ragium/blockstates/brewery.json +++ b/src/generated/resources/assets/ragium/blockstates/brewery.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/brewery" + "model": "ragium:block/machine/bio" }, "facing=north,is_active=true": { - "model": "ragium:block/brewery_active" + "model": "ragium:block/brewery" }, "facing=south,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/brewery", + "model": "ragium:block/machine/bio", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/brewery_active", + "model": "ragium:block/brewery", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_bath.json b/src/generated/resources/assets/ragium/blockstates/chemical_bath.json index 3f2eac192..4781b56ad 100644 --- a/src/generated/resources/assets/ragium/blockstates/chemical_bath.json +++ b/src/generated/resources/assets/ragium/blockstates/chemical_bath.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/chemical_bath" + "model": "ragium:block/machine/chemical" }, "facing=north,is_active=true": { - "model": "ragium:block/chemical_bath_active" + "model": "ragium:block/chemical_bath" }, "facing=south,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/chemical_bath", + "model": "ragium:block/machine/chemical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/chemical_bath_active", + "model": "ragium:block/chemical_bath", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json index 597822cf9..f82d8c293 100644 --- a/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json +++ b/src/generated/resources/assets/ragium/blockstates/chemical_reactor.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/chemical_reactor", + "model": "ragium:block/machine/chemical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/chemical_reactor_active", + "model": "ragium:block/chemical_reactor", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/chemical_reactor" + "model": "ragium:block/machine/chemical" }, "facing=north,is_active=true": { - "model": "ragium:block/chemical_reactor_active" + "model": "ragium:block/chemical_reactor" }, "facing=south,is_active=false": { - "model": "ragium:block/chemical_reactor", + "model": "ragium:block/machine/chemical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/chemical_reactor_active", + "model": "ragium:block/chemical_reactor", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/chemical_reactor", + "model": "ragium:block/machine/chemical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/chemical_reactor_active", + "model": "ragium:block/chemical_reactor", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/compressor.json b/src/generated/resources/assets/ragium/blockstates/compressor.json index fdaadffce..3e2d17ff2 100644 --- a/src/generated/resources/assets/ragium/blockstates/compressor.json +++ b/src/generated/resources/assets/ragium/blockstates/compressor.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/compressor" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/compressor_active" + "model": "ragium:block/compressor" }, "facing=south,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/compressor", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/compressor_active", + "model": "ragium:block/compressor", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/crusher.json b/src/generated/resources/assets/ragium/blockstates/crusher.json index fc0df2807..23895cee1 100644 --- a/src/generated/resources/assets/ragium/blockstates/crusher.json +++ b/src/generated/resources/assets/ragium/blockstates/crusher.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/crusher" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/crusher_active" + "model": "ragium:block/crusher" }, "facing=south,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/crusher", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/crusher_active", + "model": "ragium:block/crusher", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/cutting_machine.json b/src/generated/resources/assets/ragium/blockstates/cutting_machine.json index 2a2b51179..4f13a6dfc 100644 --- a/src/generated/resources/assets/ragium/blockstates/cutting_machine.json +++ b/src/generated/resources/assets/ragium/blockstates/cutting_machine.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/cutting_machine" + "model": "ragium:block/machine/mechanical" }, "facing=north,is_active=true": { - "model": "ragium:block/cutting_machine_active" + "model": "ragium:block/cutting_machine" }, "facing=south,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/cutting_machine", + "model": "ragium:block/machine/mechanical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/cutting_machine_active", + "model": "ragium:block/cutting_machine", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json index 3a9b85eae..48bc37471 100644 --- a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json +++ b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/electrolyzer", + "model": "ragium:block/machine/chemical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/electrolyzer_active", + "model": "ragium:block/electrolyzer", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/electrolyzer" + "model": "ragium:block/machine/chemical" }, "facing=north,is_active=true": { - "model": "ragium:block/electrolyzer_active" + "model": "ragium:block/electrolyzer" }, "facing=south,is_active=false": { - "model": "ragium:block/electrolyzer", + "model": "ragium:block/machine/chemical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/electrolyzer_active", + "model": "ragium:block/electrolyzer", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/electrolyzer", + "model": "ragium:block/machine/chemical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/electrolyzer_active", + "model": "ragium:block/electrolyzer", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/freezer.json b/src/generated/resources/assets/ragium/blockstates/freezer.json index d98e91baf..d4c8248a2 100644 --- a/src/generated/resources/assets/ragium/blockstates/freezer.json +++ b/src/generated/resources/assets/ragium/blockstates/freezer.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/freezer" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/freezer_active" + "model": "ragium:block/freezer" }, "facing=south,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/freezer", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/freezer_active", + "model": "ragium:block/freezer", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/melter.json b/src/generated/resources/assets/ragium/blockstates/melter.json index 3d216551b..1bddece81 100644 --- a/src/generated/resources/assets/ragium/blockstates/melter.json +++ b/src/generated/resources/assets/ragium/blockstates/melter.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/melter" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/melter_active" + "model": "ragium:block/melter" }, "facing=south,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/melter", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/melter_active", + "model": "ragium:block/melter", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/mixer.json b/src/generated/resources/assets/ragium/blockstates/mixer.json index bd231ffe8..a677e2585 100644 --- a/src/generated/resources/assets/ragium/blockstates/mixer.json +++ b/src/generated/resources/assets/ragium/blockstates/mixer.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/mixer", + "model": "ragium:block/machine/chemical", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/mixer_active", + "model": "ragium:block/mixer", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/mixer" + "model": "ragium:block/machine/chemical" }, "facing=north,is_active=true": { - "model": "ragium:block/mixer_active" + "model": "ragium:block/mixer" }, "facing=south,is_active=false": { - "model": "ragium:block/mixer", + "model": "ragium:block/machine/chemical", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/mixer_active", + "model": "ragium:block/mixer", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/mixer", + "model": "ragium:block/machine/chemical", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/mixer_active", + "model": "ragium:block/mixer", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/planter.json b/src/generated/resources/assets/ragium/blockstates/planter.json index 552aad4d3..0933e5ed3 100644 --- a/src/generated/resources/assets/ragium/blockstates/planter.json +++ b/src/generated/resources/assets/ragium/blockstates/planter.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/planter", + "model": "ragium:block/machine/bio", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/planter_active", + "model": "ragium:block/planter", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/planter" + "model": "ragium:block/machine/bio" }, "facing=north,is_active=true": { - "model": "ragium:block/planter_active" + "model": "ragium:block/planter" }, "facing=south,is_active=false": { - "model": "ragium:block/planter", + "model": "ragium:block/machine/bio", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/planter_active", + "model": "ragium:block/planter", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/planter", + "model": "ragium:block/machine/bio", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/planter_active", + "model": "ragium:block/planter", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json index eb7820868..531333288 100644 --- a/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json +++ b/src/generated/resources/assets/ragium/blockstates/pyrolyzer.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/pyrolyzer", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/pyrolyzer_active", + "model": "ragium:block/pyrolyzer", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/pyrolyzer" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/pyrolyzer_active" + "model": "ragium:block/pyrolyzer" }, "facing=south,is_active=false": { - "model": "ragium:block/pyrolyzer", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/pyrolyzer_active", + "model": "ragium:block/pyrolyzer", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/pyrolyzer", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/pyrolyzer_active", + "model": "ragium:block/pyrolyzer", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/refinery.json b/src/generated/resources/assets/ragium/blockstates/refinery.json index be4c2a0ef..8a03549f5 100644 --- a/src/generated/resources/assets/ragium/blockstates/refinery.json +++ b/src/generated/resources/assets/ragium/blockstates/refinery.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/refinery", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/refinery_active", + "model": "ragium:block/refinery", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/refinery" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/refinery_active" + "model": "ragium:block/refinery" }, "facing=south,is_active=false": { - "model": "ragium:block/refinery", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/refinery_active", + "model": "ragium:block/refinery", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/refinery", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/refinery_active", + "model": "ragium:block/refinery", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/scanner.json b/src/generated/resources/assets/ragium/blockstates/scanner.json index 1ca752598..8395d77d1 100644 --- a/src/generated/resources/assets/ragium/blockstates/scanner.json +++ b/src/generated/resources/assets/ragium/blockstates/scanner.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/scanner", + "model": "ragium:block/machine/electronics", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/scanner_active", + "model": "ragium:block/scanner", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/scanner" + "model": "ragium:block/machine/electronics" }, "facing=north,is_active=true": { - "model": "ragium:block/scanner_active" + "model": "ragium:block/scanner" }, "facing=south,is_active=false": { - "model": "ragium:block/scanner", + "model": "ragium:block/machine/electronics", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/scanner_active", + "model": "ragium:block/scanner", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/scanner", + "model": "ragium:block/machine/electronics", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/scanner_active", + "model": "ragium:block/scanner", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/blockstates/smelter.json b/src/generated/resources/assets/ragium/blockstates/smelter.json index 4fb12988b..6eec035d7 100644 --- a/src/generated/resources/assets/ragium/blockstates/smelter.json +++ b/src/generated/resources/assets/ragium/blockstates/smelter.json @@ -1,33 +1,33 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/smelter", + "model": "ragium:block/machine/heat", "y": 90 }, "facing=east,is_active=true": { - "model": "ragium:block/smelter_active", + "model": "ragium:block/smelter", "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/smelter" + "model": "ragium:block/machine/heat" }, "facing=north,is_active=true": { - "model": "ragium:block/smelter_active" + "model": "ragium:block/smelter" }, "facing=south,is_active=false": { - "model": "ragium:block/smelter", + "model": "ragium:block/machine/heat", "y": 180 }, "facing=south,is_active=true": { - "model": "ragium:block/smelter_active", + "model": "ragium:block/smelter", "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/smelter", + "model": "ragium:block/machine/heat", "y": 270 }, "facing=west,is_active=true": { - "model": "ragium:block/smelter_active", + "model": "ragium:block/smelter", "y": 270 } } diff --git a/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json index 290d6aecf..7f25955e2 100644 --- a/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/arcane_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/arcane", + "side": "ragium:block/machine/arcane_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/assembler.json b/src/generated/resources/assets/ragium/models/block/assembler.json index ec3cdd6e4..189445542 100644 --- a/src/generated/resources/assets/ragium/models/block/assembler.json +++ b/src/generated/resources/assets/ragium/models/block/assembler.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/assembler_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json index 29d0c2090..3515a3ea6 100644 --- a/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/bio_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/bio", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/brewery.json b/src/generated/resources/assets/ragium/models/block/brewery.json index 76ad51a77..7cc0e22b7 100644 --- a/src/generated/resources/assets/ragium/models/block/brewery.json +++ b/src/generated/resources/assets/ragium/models/block/brewery.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/brewery_front", - "side": "ragium:block/machine_casing/bio", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_bath.json b/src/generated/resources/assets/ragium/models/block/chemical_bath.json index 8ed2eb96d..a8b0a1306 100644 --- a/src/generated/resources/assets/ragium/models/block/chemical_bath.json +++ b/src/generated/resources/assets/ragium/models/block/chemical_bath.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/chemical_bath_front", - "side": "ragium:block/machine_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json b/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json deleted file mode 100644 index 6e4a2ab68..000000000 --- a/src/generated/resources/assets/ragium/models/block/chemical_bath_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/chemical_bath_front_active", - "side": "ragium:block/machine_casing/chemical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json index 6c596352f..6dac2c91a 100644 --- a/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/chemical_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_reactor.json b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json index 0d0ce0a39..6e44b3c6a 100644 --- a/src/generated/resources/assets/ragium/models/block/chemical_reactor.json +++ b/src/generated/resources/assets/ragium/models/block/chemical_reactor.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/chemical_reactor_front", - "side": "ragium:block/machine_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json b/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json deleted file mode 100644 index 025419bab..000000000 --- a/src/generated/resources/assets/ragium/models/block/chemical_reactor_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/chemical_reactor_front_active", - "side": "ragium:block/machine_casing/chemical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/compressor.json b/src/generated/resources/assets/ragium/models/block/compressor.json index 5d588a623..5dc1de7fc 100644 --- a/src/generated/resources/assets/ragium/models/block/compressor.json +++ b/src/generated/resources/assets/ragium/models/block/compressor.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/compressor_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/compressor_active.json b/src/generated/resources/assets/ragium/models/block/compressor_active.json deleted file mode 100644 index fb0fae1a6..000000000 --- a/src/generated/resources/assets/ragium/models/block/compressor_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/compressor_front_active", - "side": "ragium:block/machine_casing/mechanical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/crusher.json b/src/generated/resources/assets/ragium/models/block/crusher.json index a452e1d66..d7b3585f9 100644 --- a/src/generated/resources/assets/ragium/models/block/crusher.json +++ b/src/generated/resources/assets/ragium/models/block/crusher.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/crusher_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/crusher_active.json b/src/generated/resources/assets/ragium/models/block/crusher_active.json deleted file mode 100644 index d883c70fe..000000000 --- a/src/generated/resources/assets/ragium/models/block/crusher_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/crusher_front_active", - "side": "ragium:block/machine_casing/mechanical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cutting_machine.json b/src/generated/resources/assets/ragium/models/block/cutting_machine.json index 8df900068..da0bcf5aa 100644 --- a/src/generated/resources/assets/ragium/models/block/cutting_machine.json +++ b/src/generated/resources/assets/ragium/models/block/cutting_machine.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/cutting_machine_front", - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json b/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json deleted file mode 100644 index 34835952e..000000000 --- a/src/generated/resources/assets/ragium/models/block/cutting_machine_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/cutting_machine_front_active", - "side": "ragium:block/machine_casing/mechanical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer.json b/src/generated/resources/assets/ragium/models/block/electrolyzer.json index 3882995df..871ea10fd 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_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json b/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json deleted file mode 100644 index afa823498..000000000 --- a/src/generated/resources/assets/ragium/models/block/electrolyzer_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/electrolyzer_front_active", - "side": "ragium:block/machine_casing/chemical", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json index ed70b90a7..03e79c1af 100644 --- a/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/electronics_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/electronics", + "side": "ragium:block/machine/electronics_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/freezer.json b/src/generated/resources/assets/ragium/models/block/freezer.json index 6b3baf477..960f9dbdc 100644 --- a/src/generated/resources/assets/ragium/models/block/freezer.json +++ b/src/generated/resources/assets/ragium/models/block/freezer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/freezer_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/freezer_active.json b/src/generated/resources/assets/ragium/models/block/freezer_active.json deleted file mode 100644 index 01f2e8080..000000000 --- a/src/generated/resources/assets/ragium/models/block/freezer_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/freezer_front_active", - "side": "ragium:block/machine_casing/heat", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json index 25d72fcb8..bcbf5de3b 100644 --- a/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/heat_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/planter_active.json b/src/generated/resources/assets/ragium/models/block/machine/arcane.json similarity index 51% rename from src/generated/resources/assets/ragium/models/block/planter_active.json rename to src/generated/resources/assets/ragium/models/block/machine/arcane.json index 268ab9fc9..a294becbf 100644 --- a/src/generated/resources/assets/ragium/models/block/planter_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/arcane.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/planter_front_active", - "side": "ragium:block/machine_casing/bio", + "front": "ragium:block/machine/arcane_front", + "side": "ragium:block/machine/arcane_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/melter_active.json b/src/generated/resources/assets/ragium/models/block/machine/bio.json similarity index 52% rename from src/generated/resources/assets/ragium/models/block/melter_active.json rename to src/generated/resources/assets/ragium/models/block/machine/bio.json index 0d075dcef..a1f708d0c 100644 --- a/src/generated/resources/assets/ragium/models/block/melter_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/bio.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/melter_front_active", - "side": "ragium:block/machine_casing/heat", + "front": "ragium:block/machine/bio_front", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mixer_active.json b/src/generated/resources/assets/ragium/models/block/machine/chemical.json similarity index 50% rename from src/generated/resources/assets/ragium/models/block/mixer_active.json rename to src/generated/resources/assets/ragium/models/block/machine/chemical.json index 7e936e45b..fc256c3e7 100644 --- a/src/generated/resources/assets/ragium/models/block/mixer_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/chemical.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/mixer_front_active", - "side": "ragium:block/machine_casing/chemical", + "front": "ragium:block/machine/chemical_front", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/machine/electronics.json b/src/generated/resources/assets/ragium/models/block/machine/electronics.json new file mode 100644 index 000000000..ec021e4fb --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/machine/electronics.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/electronics_front", + "side": "ragium:block/machine/electronics_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/brewery_active.json b/src/generated/resources/assets/ragium/models/block/machine/heat.json similarity index 52% rename from src/generated/resources/assets/ragium/models/block/brewery_active.json rename to src/generated/resources/assets/ragium/models/block/machine/heat.json index 28750fdfe..8c24585a4 100644 --- a/src/generated/resources/assets/ragium/models/block/brewery_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/heat.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/brewery_front_active", - "side": "ragium:block/machine_casing/bio", + "front": "ragium:block/machine/heat_front", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/assembler_active.json b/src/generated/resources/assets/ragium/models/block/machine/mechanical.json similarity index 50% rename from src/generated/resources/assets/ragium/models/block/assembler_active.json rename to src/generated/resources/assets/ragium/models/block/machine/mechanical.json index 42df2dc6e..5c45f9b32 100644 --- a/src/generated/resources/assets/ragium/models/block/assembler_active.json +++ b/src/generated/resources/assets/ragium/models/block/machine/mechanical.json @@ -1,8 +1,8 @@ { "parent": "minecraft:block/orientable", "textures": { - "front": "ragium:block/assembler_front_active", - "side": "ragium:block/machine_casing/mechanical", + "front": "ragium:block/machine/mechanical_front", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json index 9bfa607dc..1a40da9c8 100644 --- a/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json +++ b/src/generated/resources/assets/ragium/models/block/mechanical_machine_casing.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/cube_top", "textures": { - "side": "ragium:block/machine_casing/mechanical", + "side": "ragium:block/machine/mechanical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/melter.json b/src/generated/resources/assets/ragium/models/block/melter.json index 0c4e61e31..bf98e1800 100644 --- a/src/generated/resources/assets/ragium/models/block/melter.json +++ b/src/generated/resources/assets/ragium/models/block/melter.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/melter_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/mixer.json b/src/generated/resources/assets/ragium/models/block/mixer.json index 851ba5a6b..3c41f416d 100644 --- a/src/generated/resources/assets/ragium/models/block/mixer.json +++ b/src/generated/resources/assets/ragium/models/block/mixer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/mixer_front", - "side": "ragium:block/machine_casing/chemical", + "side": "ragium:block/machine/chemical_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/planter.json b/src/generated/resources/assets/ragium/models/block/planter.json index 12b92054c..42eec88a1 100644 --- a/src/generated/resources/assets/ragium/models/block/planter.json +++ b/src/generated/resources/assets/ragium/models/block/planter.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/planter_front", - "side": "ragium:block/machine_casing/bio", + "side": "ragium:block/machine/bio_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/pyrolyzer.json b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json index c66c848cf..591b37ca6 100644 --- a/src/generated/resources/assets/ragium/models/block/pyrolyzer.json +++ b/src/generated/resources/assets/ragium/models/block/pyrolyzer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/pyrolyzer_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json b/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json deleted file mode 100644 index 461d37a57..000000000 --- a/src/generated/resources/assets/ragium/models/block/pyrolyzer_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/pyrolyzer_front_active", - "side": "ragium:block/machine_casing/heat", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/refinery.json b/src/generated/resources/assets/ragium/models/block/refinery.json index 9bd9d9733..fa4fe7ca3 100644 --- a/src/generated/resources/assets/ragium/models/block/refinery.json +++ b/src/generated/resources/assets/ragium/models/block/refinery.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/refinery_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/refinery_active.json b/src/generated/resources/assets/ragium/models/block/refinery_active.json deleted file mode 100644 index bd128cd10..000000000 --- a/src/generated/resources/assets/ragium/models/block/refinery_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/refinery_front_active", - "side": "ragium:block/machine_casing/heat", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/scanner.json b/src/generated/resources/assets/ragium/models/block/scanner.json index a55ac9335..923b3781a 100644 --- a/src/generated/resources/assets/ragium/models/block/scanner.json +++ b/src/generated/resources/assets/ragium/models/block/scanner.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/scanner_front", - "side": "ragium:block/machine_casing/electronics", + "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/scanner_active.json b/src/generated/resources/assets/ragium/models/block/scanner_active.json deleted file mode 100644 index 4dfbfb248..000000000 --- a/src/generated/resources/assets/ragium/models/block/scanner_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/scanner_front_active", - "side": "ragium:block/machine_casing/electronics", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smelter.json b/src/generated/resources/assets/ragium/models/block/smelter.json index ac9251ffc..c287b69a4 100644 --- a/src/generated/resources/assets/ragium/models/block/smelter.json +++ b/src/generated/resources/assets/ragium/models/block/smelter.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/smelter_front", - "side": "ragium:block/machine_casing/heat", + "side": "ragium:block/machine/heat_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smelter_active.json b/src/generated/resources/assets/ragium/models/block/smelter_active.json deleted file mode 100644 index f7a8ee8b2..000000000 --- a/src/generated/resources/assets/ragium/models/block/smelter_active.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "front": "ragium:block/smelter_front_active", - "side": "ragium:block/machine_casing/heat", - "top": "ragium:block/machine_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/arcane.png b/src/main/resources/assets/ragium/textures/block/machine/arcane_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/arcane.png rename to src/main/resources/assets/ragium/textures/block/machine/arcane_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/bio.png b/src/main/resources/assets/ragium/textures/block/machine/bio_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/bio.png rename to src/main/resources/assets/ragium/textures/block/machine/bio_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/chemical.png b/src/main/resources/assets/ragium/textures/block/machine/chemical_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/chemical.png rename to src/main/resources/assets/ragium/textures/block/machine/chemical_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/electronics.png b/src/main/resources/assets/ragium/textures/block/machine/electronics_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/electronics.png rename to src/main/resources/assets/ragium/textures/block/machine/electronics_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine/heat_front.png b/src/main/resources/assets/ragium/textures/block/machine/heat_front.png new file mode 100644 index 0000000000000000000000000000000000000000..f68bbd06bed848dc5ff2060f7e70a071ce24f5b2 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ot`d^Ar*{wCMoi@7znu5yREy) zye2Zd@$h$!7_Nh!1u+f64G)wqu!ILXGSvtvoRIXKtiJ5+?~^{-_kLgPD$Wyqv-(_B zM2F!cjvK}k%;QB%PKX{jbV!=XqSpI;$*!cPEr*#7@$!~*T#;Y@QLg;-$MXNp$2%8Q z95$Z!HtfHol%Ky7#{(1HB~vyqGBEuA|99n`NkB)jfgHum;LTC1tF5(91t`Mc>FVdQ I&MBb@0KtAwyZ`_I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/machine_casing/heat.png b/src/main/resources/assets/ragium/textures/block/machine/heat_side.png similarity index 100% rename from src/main/resources/assets/ragium/textures/block/machine_casing/heat.png rename to src/main/resources/assets/ragium/textures/block/machine/heat_side.png diff --git a/src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png b/src/main/resources/assets/ragium/textures/block/machine/mechanical_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1ed6dc1da24ee22f6b64358b41cf3559965126 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ZJsWUAr*{wCK+UYe!Lz62w{1+VGaJ3=!fQZu Date: Sun, 13 Sep 2026 16:42:09 +0900 Subject: [PATCH 16/28] =?UTF-8?q?refactor:=20=E3=82=BF=E3=82=A4=E3=83=97?= =?UTF-8?q?=E3=83=9F=E3=82=B9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recipe/RagiumVanillaRecipeProvider.kt | 4 ++-- ...n => copper_ingot_from_smelting_dust.json} | 4 ++-- ...son => gold_ingot_from_smelting_dust.json} | 4 ++-- ...son => iron_ingot_from_smelting_dust.json} | 4 ++-- ...> netherite_ingot_from_smelting_dust.json} | 4 ++-- ...n => copper_ingot_from_smelting_dust.json} | 0 ...son => gold_ingot_from_smelting_dust.json} | 0 ...son => iron_ingot_from_smelting_dust.json} | 0 ...> netherite_ingot_from_smelting_dust.json} | 0 .../lib/color/HTColoredCollection.kt | 23 +++++++++++-------- 10 files changed, 24 insertions(+), 19 deletions(-) rename src/generated/resources/data/ragium/advancement/recipes/misc/{copper_ingot_from_smeting_dust.json => copper_ingot_from_smelting_dust.json} (81%) rename src/generated/resources/data/ragium/advancement/recipes/misc/{gold_ingot_from_smeting_dust.json => gold_ingot_from_smelting_dust.json} (82%) rename src/generated/resources/data/ragium/advancement/recipes/misc/{iron_ingot_from_smeting_dust.json => iron_ingot_from_smelting_dust.json} (82%) rename src/generated/resources/data/ragium/advancement/recipes/misc/{netherite_ingot_from_smeting_dust.json => netherite_ingot_from_smelting_dust.json} (81%) rename src/generated/resources/data/ragium/recipe/{copper_ingot_from_smeting_dust.json => copper_ingot_from_smelting_dust.json} (100%) rename src/generated/resources/data/ragium/recipe/{gold_ingot_from_smeting_dust.json => gold_ingot_from_smelting_dust.json} (100%) rename src/generated/resources/data/ragium/recipe/{iron_ingot_from_smeting_dust.json => iron_ingot_from_smelting_dust.json} (100%) rename src/generated/resources/data/ragium/recipe/{netherite_ingot_from_smeting_dust.json => netherite_ingot_from_smelting_dust.json} (100%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 79914103e..d34bd5fca 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -80,7 +80,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec } ) - override fun getName(): String = "Vanilla Recipes 2" + override fun getName(): String = "Vanilla Recipes" } override fun buildRecipes() { @@ -452,7 +452,7 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec 200 ).group(item.idOrThrow.path) .unlockedBy(getHasName(dust), has(dust)) - .saveSuffixed(output, "_from_smeting_dust") + .saveSuffixed(output, "_from_smelting_dust") SimpleCookingRecipeBuilder.blasting( Ingredient.of(dust), RecipeCategory.MISC, diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json similarity index 81% rename from src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json index e902906cb..564a43910 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/copper_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:copper_ingot_from_smeting_dust" + "recipe": "minecraft:copper_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:copper_ingot_from_smeting_dust" + "minecraft:copper_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json similarity index 82% rename from src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json index 8e9e80666..350d77561 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/gold_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:gold_ingot_from_smeting_dust" + "recipe": "minecraft:gold_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:gold_ingot_from_smeting_dust" + "minecraft:gold_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json similarity index 82% rename from src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json index 2e55dad0a..4bd080ffc 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/iron_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:iron_ingot_from_smeting_dust" + "recipe": "minecraft:iron_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:iron_ingot_from_smeting_dust" + "minecraft:iron_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json similarity index 81% rename from src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json index d0bd5aacf..2d39b58fb 100644 --- a/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smeting_dust.json +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/netherite_ingot_from_smelting_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:netherite_ingot_from_smeting_dust" + "recipe": "minecraft:netherite_ingot_from_smelting_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:netherite_ingot_from_smeting_dust" + "minecraft:netherite_ingot_from_smelting_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/copper_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/copper_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/copper_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/copper_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/gold_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/gold_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/gold_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/gold_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/iron_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/iron_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/iron_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/iron_ingot_from_smelting_dust.json diff --git a/src/generated/resources/data/ragium/recipe/netherite_ingot_from_smeting_dust.json b/src/generated/resources/data/ragium/recipe/netherite_ingot_from_smelting_dust.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/netherite_ingot_from_smeting_dust.json rename to src/generated/resources/data/ragium/recipe/netherite_ingot_from_smelting_dust.json diff --git a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt index e42c21a64..4ef41af85 100644 --- a/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt +++ b/src/lib/kotlin/hiiragi283/lib/color/HTColoredCollection.kt @@ -9,6 +9,7 @@ import net.minecraft.world.item.DyeColor * @author Hiiragi Tsubasa * @since 26.1.0 */ +@JvmRecord data class HTColoredCollection( val white: T, val orange: T, @@ -26,7 +27,7 @@ data class HTColoredCollection( val green: T, val red: T, val black: T -) : AbstractCollection() { +) : Collection { companion object { @JvmField val VALUES: HTColoredCollection = HTColoredCollection( @@ -88,14 +89,6 @@ data class HTColoredCollection( DyeColor.BLACK -> black } - fun asSequence(): Sequence = DyeColor.entries.asSequence().map(::get) - - override val size: Int = 16 - - override fun isEmpty(): Boolean = false - - override fun iterator(): Iterator = asSequence().iterator() - inline fun map(transform: (T) -> R): HTColoredCollection = HTColoredCollection( transform(white), transform(orange), @@ -134,6 +127,18 @@ data class HTColoredCollection( transform(red, other.red), transform(black, other.black) ) + + override val size: Int get() = 16 + + override fun isEmpty(): Boolean = false + + override fun contains(element: @UnsafeVariance T): Boolean = this.any { it == element } + + fun asSequence(): Sequence = DyeColor.entries.asSequence().map(::get) + + override fun iterator(): Iterator = asSequence().iterator() + + override fun containsAll(elements: Collection<@UnsafeVariance T>): Boolean = elements.all { contains(it) } } /** From 4b9aaa44efa899692626723e866a51644847d49b Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 22:11:16 +0900 Subject: [PATCH 17/28] =?UTF-8?q?chore:=20=E7=B4=B0=E3=81=8B=E3=81=84?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration/jei/RagiumJeiRecipeTypes.kt | 6 ++---- .../hiiragi283/ragium/data/RagiumDataGen.kt | 2 ++ .../recipe/RagiumElectronicsRecipeProvider.kt | 15 +++++++++++++++ .../block/entity/machine/HTSmelterBlockEntity.kt | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt 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 c38d52f9b..7c6414c7a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -13,8 +13,6 @@ import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.block.RagiumBlocks -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.Items data object RagiumJeiRecipeTypes { // Mechanical @@ -36,11 +34,11 @@ data object RagiumJeiRecipeTypes { @JvmField val DRAINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.DRAINING, ItemStack(Items.GLASS_BOTTLE)) + HTJeiRecipeType(RagiumRecipeTypes.DRAINING, RagiumBlocks.MACHINE_CASING) @JvmField val FILLING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.FILLING, ItemStack(Items.GLASS_BOTTLE)) + HTJeiRecipeType(RagiumRecipeTypes.FILLING, RagiumBlocks.MACHINE_CASING) // Heat @JvmField diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 0b0ff1266..7cfbc03dd 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -13,6 +13,7 @@ import hiiragi283.ragium.data.model.RagiumModelProvider import hiiragi283.ragium.data.recipe.RagiumBioRecipeProvider import hiiragi283.ragium.data.recipe.RagiumChemicalRecipeProvider import hiiragi283.ragium.data.recipe.RagiumCommonRecipeProvider +import hiiragi283.ragium.data.recipe.RagiumElectronicsRecipeProvider import hiiragi283.ragium.data.recipe.RagiumHeatRecipeProvider import hiiragi283.ragium.data.recipe.RagiumMechanicalRecipeProvider import hiiragi283.ragium.data.recipe.RagiumRecipePriorityProvider @@ -52,6 +53,7 @@ data object RagiumDataGen { event.createProvider(::RagiumCommonRecipeProvider) event.createProvider(::RagiumBioRecipeProvider) + event.createProvider(::RagiumElectronicsRecipeProvider) event.createProvider(::RagiumChemicalRecipeProvider) event.createProvider(::RagiumHeatRecipeProvider) event.createProvider(::RagiumMechanicalRecipeProvider) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt new file mode 100644 index 000000000..6ce0cab2a --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -0,0 +1,15 @@ +package hiiragi283.ragium.data.recipe + +import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.core.HolderLookup +import net.minecraft.data.PackOutput +import java.util.concurrent.CompletableFuture + +class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : + HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { + override fun exportValues() { + } + + override fun getName(): String = "Electronics Recipes" +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt index 702301467..6e60fd2ad 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTSmelterBlockEntity.kt @@ -126,7 +126,7 @@ class HTSmelterBlockEntity(pos: BlockPos, state: BlockState) : override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { inputSlot = builder.addSlot(HTSlotInfo.INPUT, HTBasicItemSlot.input(listener)) - typeSlot = builder.addSlot(HTSlotInfo.NONE, HTBasicItemSlot.input(listener)) + typeSlot = builder.addSlot(HTSlotInfo.NONE, HTBasicItemSlot.input(listener, limit = 1)) outputSlot = builder.addSlot(HTSlotInfo.OUTPUT, HTBasicItemSlot.output(listener)) } From 0f305536d7c4ad1219492741f3318ab7d15925f2 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 22:30:47 +0900 Subject: [PATCH 18/28] =?UTF-8?q?feat:=20=E3=83=AC=E3=82=B7=E3=83=94?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=97=E3=80=8CAlloying=E3=80=8D=E3=82=92?= =?UTF-8?q?=E5=BE=A9=E6=B4=BB=20feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E6=A9=9F=E6=A2=B0=E3=80=8CAlloy=20Smelter=20/=20=E5=90=88?= =?UTF-8?q?=E9=87=91=E7=82=89=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 3 ++ .../integration/jei/RagiumJeiRecipeTypes.kt | 4 ++ .../advancement/RagiumAdvancementProvider.kt | 7 +++- .../data/lang/RagiumEnglishLangProvider.kt | 2 + .../data/lang/RagiumJapaneseLangProvider.kt | 2 + .../data/recipe/RagiumHeatRecipeProvider.kt | 38 +++++++++++++++++++ .../recipe/RagiumMechanicalRecipeProvider.kt | 26 ------------- .../recipe/RagiumVanillaRecipeProvider.kt | 4 ++ .../ragium/blockstates/alloy_smelter.json | 34 +++++++++++++++++ .../assets/ragium/items/alloy_smelter.json | 6 +++ .../resources/assets/ragium/lang/en_us.json | 2 + .../resources/assets/ragium/lang/ja_jp.json | 2 + .../ragium/models/block/alloy_smelter.json | 8 ++++ .../tags/block/mineable/pickaxe.json | 1 + .../ragium/advancement/alloy_smelter.json | 32 ++++++++++++++++ .../data/ragium/advancement/black_steel.json | 2 +- .../recipes/misc/alloy_smelter.json | 32 ++++++++++++++++ .../loot_table/blocks/alloy_smelter.json | 21 ++++++++++ .../data/ragium/recipe/alloy_smelter.json | 18 +++++++++ .../black_steel_ingot.json | 12 ++++-- .../alloying/chemical_machine_parts.json | 28 ++++++++++++++ .../netherite_ingot.json | 10 ++++- .../assembling/chemical_machine_parts.json | 16 -------- .../data/ragium/tags/block/machines/heat.json | 1 + .../data/ragium/tags/item/machines/heat.json | 1 + .../data/recipe/HTFluidIngredientBuilder.kt | 18 --------- .../data/recipe/HTItemIngredientBuilder.kt | 12 ------ .../lib/data/recipe/HTRecipeProvider.kt | 12 ++++++ .../hiiragi283/ragium/api/RagiumConfig.kt | 4 ++ .../hiiragi283/ragium/api/RagiumConstants.kt | 2 + .../api/data/recipe/RagiumRecipeBuilders.kt | 11 ++++++ .../ragium/api/recipe/RTAlloyingRecipe.kt | 28 ++++++++++++++ .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 ++ .../api/recipe/RagiumRecipeSerializers.kt | 4 ++ .../ragium/api/recipe/RagiumRecipeTypes.kt | 3 ++ .../kotlin/hiiragi283/ragium/common/Ragium.kt | 1 + .../hiiragi283/ragium/common/RagiumCommon.kt | 1 + .../advancment/RagiumAdvancementKeys.kt | 3 ++ .../ragium/common/block/RagiumBlocks.kt | 5 +++ .../block/entity/RagiumBlockEntityTypes.kt | 5 +++ .../machine/HTAlloySmelterBlockEntity.kt | 23 +++++++++++ 41 files changed, 368 insertions(+), 79 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/alloy_smelter.json create mode 100644 src/generated/resources/assets/ragium/items/alloy_smelter.json create mode 100644 src/generated/resources/assets/ragium/models/block/alloy_smelter.json create mode 100644 src/generated/resources/data/ragium/advancement/alloy_smelter.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json create mode 100644 src/generated/resources/data/ragium/recipe/alloy_smelter.json rename src/generated/resources/data/ragium/recipe/{assembling => alloying}/black_steel_ingot.json (52%) create mode 100644 src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json rename src/generated/resources/data/ragium/recipe/{assembling => alloying}/netherite_ingot.json (59%) delete mode 100644 src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index b48de7ae8..92b7a2102 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -113,6 +113,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.DRAINING), HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat + HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ALLOYING), HTFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTItemToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), @@ -139,6 +140,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.DRAINING, RagiumRecipeLookups.DRAINING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.FILLING, RagiumRecipeLookups.FILLING) // Heat + HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.ALLOYING, RagiumRecipeLookups.ALLOYING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.FREEZING, RagiumRecipeLookups.FREEZING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.MELTING, RagiumRecipeLookups.MELTING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PYROLYZING, RagiumRecipeLookups.PYROLYZING) @@ -204,6 +206,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addCraftingStation(RagiumJeiRecipeTypes.COMPRESSING, RagiumBlocks.COMPRESSOR) registration.addCraftingStation(RagiumJeiRecipeTypes.CUTTING, RagiumBlocks.CUTTING_MACHINE) // Heat + registration.addCraftingStation(RagiumJeiRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) registration.addCraftingStation(RagiumJeiRecipeTypes.FREEZING, RagiumBlocks.FREEZER) registration.addCraftingStation(RagiumJeiRecipeTypes.MELTING, RagiumBlocks.MELTER) registration.addCraftingStation(RagiumJeiRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) 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 7c6414c7a..21d10a08e 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -41,6 +41,10 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.FILLING, RagiumBlocks.MACHINE_CASING) // Heat + @JvmField + val ALLOYING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) + @JvmField val FREEZING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.FREEZING, RagiumBlocks.FREEZER) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index 5d5b24274..1f7760deb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -107,9 +107,14 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumItems.getParts(HTMachineType.HEAT), AdvancementType.GOAL ) + createSimple( + RagiumAdvancementKeys.ALLOY_SMELTER, + RagiumAdvancementKeys.HEAT_MACHINE_PARTS, + RagiumBlocks.ALLOY_SMELTER + ) createSimple( RagiumAdvancementKeys.BLACK_STEEL, - RagiumAdvancementKeys.ASSEMBLER, + RagiumAdvancementKeys.ALLOY_SMELTER, HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL ) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 481bd98e2..498026d97 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -43,6 +43,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.COMPRESSOR, "Compressor") add(RagiumBlocks.CUTTING_MACHINE, "Cutting Machine") + add(RagiumBlocks.ALLOY_SMELTER, "Alloy Smelter") add(RagiumBlocks.FREEZER, "Freezer") add(RagiumBlocks.MELTER, "Melter") add(RagiumBlocks.PYROLYZER, "Pyrolyzer") @@ -135,6 +136,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.DRAINING, "Draining") add(RagiumRecipeTypes.FILLING, "Filling") + add(RagiumRecipeTypes.ALLOYING, "Alloying") add(RagiumRecipeTypes.FREEZING, "Freezing") add(RagiumRecipeTypes.MELTING, "Melting") add(RagiumRecipeTypes.PYROLYZING, "Pyrolyzing") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 1ceae9918..69fb4ae6c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -39,6 +39,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.COMPRESSOR, "圧縮機") add(RagiumBlocks.CUTTING_MACHINE, "裁断機") + add(RagiumBlocks.ALLOY_SMELTER, "合金炉") add(RagiumBlocks.FREEZER, "冷凍機") add(RagiumBlocks.MELTER, "溶融炉") add(RagiumBlocks.PYROLYZER, "熱分解炉") @@ -131,6 +132,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.DRAINING, "排出") add(RagiumRecipeTypes.FILLING, "封入") + add(RagiumRecipeTypes.ALLOYING, "合金") add(RagiumRecipeTypes.FREEZING, "冷凍") add(RagiumRecipeTypes.MELTING, "溶融") add(RagiumRecipeTypes.PYROLYZING, "熱分解") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 5ecdb630c..b8e1a56b4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -4,8 +4,11 @@ import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial +import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.fluid.RagiumFluids +import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponents import net.minecraft.data.PackOutput @@ -18,10 +21,45 @@ import java.util.concurrent.CompletableFuture class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + alloying() freezing() melting() } + private fun alloying() { + // Gold + Netherite Scrap -> Netherite + RagiumRecipeBuilders.alloying { + primary { + +dustOrIngot(RagiumMaterial.Metal.GOLD) + count = 2 + } + secondary { + items { +Items.NETHERITE_SCRAP } + count = 2 + } + result { +Items.NETHERITE_INGOT } + }.save(exporter) + + // Machine Casing + RagiumRecipeBuilders.alloying { + primary { + +dustOrIngot(RagiumMaterial.Metal.BLACK_STEEL) + count = 2 + } + secondary { +dustOrIngot(RagiumMaterial.Metal.GOLD) } + result { +RagiumItems.getParts(HTMachineType.CHEMICAL) } + }.save(exporter) + // Sooty Iron + Obsidian Dust -> Black Steel + RagiumRecipeBuilders.alloying { + primary { +dustOrIngot(RagiumMaterial.Metal.SOOTY_IRON) } + secondary { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) + count = 2 + } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + }.save(exporter) + } + private fun freezing() { // Water -> Snow Block RagiumRecipeBuilders.freezing { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 33570d167..d0cd3df33 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -184,18 +184,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable result { +Items.PIGLIN_HEAD } }.save(exporter) - // Gold + Netherite Scrap -> Netherite - RagiumRecipeBuilders.assembling { - primary { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Metal.GOLD) - count = 2 - } - secondary { - items { +Items.NETHERITE_SCRAP } - count = 2 - } - result { +Items.NETHERITE_INGOT } - }.save(exporter) // Gold Block + Apple -> Enchanted Golden Apple RagiumRecipeBuilders.assembling { primary { items { +Items.APPLE } } @@ -208,25 +196,11 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // Machine Casing - RagiumRecipeBuilders.assembling { - primary { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) - count = 2 - } - secondary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.getParts(HTMachineType.CHEMICAL) } - }.save(exporter) RagiumRecipeBuilders.assembling { primary { items { +RagiumItems.getParts(HTMachineType.MECHANICAL) } } secondary { items { +Items.MAGMA_BLOCK } } result { +RagiumItems.getParts(HTMachineType.HEAT) } }.save(exporter) - // Sooty Iron + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.assembling { - primary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } - secondary { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } - }.save(exporter) } private fun compressing() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index d34bd5fca..244981e5b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -259,6 +259,10 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec unlockedBy(getHasName(Items.STONECUTTER), has(Items.STONECUTTER)) } // Heat + heat(RagiumBlocks.ALLOY_SMELTER) { + define('D', Items.BLAST_FURNACE) + unlockedBy(getHasName(Items.BLAST_FURNACE), has(Items.BLAST_FURNACE)) + } heat(RagiumBlocks.FREEZER) { define('D', Tags.Items.BUCKETS_WATER) unlockedBy(getHasName(Tags.Items.BUCKETS_WATER), has(Tags.Items.BUCKETS_WATER)) diff --git a/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json b/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json new file mode 100644 index 000000000..657ac4afb --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/alloy_smelter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 90 + }, + "facing=east,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 90 + }, + "facing=north,is_active=false": { + "model": "ragium:block/machine/heat" + }, + "facing=north,is_active=true": { + "model": "ragium:block/alloy_smelter" + }, + "facing=south,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 180 + }, + "facing=south,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 180 + }, + "facing=west,is_active=false": { + "model": "ragium:block/machine/heat", + "y": 270 + }, + "facing=west,is_active=true": { + "model": "ragium:block/alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/alloy_smelter.json b/src/generated/resources/assets/ragium/items/alloy_smelter.json new file mode 100644 index 000000000..795d77d78 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/alloy_smelter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/alloy_smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index ef6d4b1a5..bc3171d37 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -17,6 +17,7 @@ "advancement.ragium.root.title": "Ragium", "advancement.ragium.sooty_iron.desc": "Craft a Sooty Iron Ingot", "advancement.ragium.sooty_iron.title": "Acquire Blackware", + "block.ragium.alloy_smelter": "Alloy Smelter", "block.ragium.anti_rust_oil": "Anti-rust Oil", "block.ragium.arcane_machine_casing": "Machine Casing (Arcane)", "block.ragium.aromatic_compound": "Aromatic Compound", @@ -258,6 +259,7 @@ "ore_slurry_data.ragium.copper": "Copper Ore Slurry", "ore_slurry_data.ragium.gold": "Gold Ore Slurry", "ore_slurry_data.ragium.iron": "Iron Ore Slurry", + "recipe_type.ragium.alloying": "Alloying", "recipe_type.ragium.assembling": "Assembling", "recipe_type.ragium.bathing": "Chemical Bathing", "recipe_type.ragium.brewing": "Brewing", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index a225d1181..107862dd5 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -17,6 +17,7 @@ "advancement.ragium.root.title": "ラギウム", "advancement.ragium.sooty_iron.desc": "煤鉄をつくる", "advancement.ragium.sooty_iron.title": "黒鉄(くろがね)を手に入れる", + "block.ragium.alloy_smelter": "合金炉", "block.ragium.anti_rust_oil": "防錆油", "block.ragium.arcane_machine_casing": "機械筐体 (神秘)", "block.ragium.aromatic_compound": "芳香族化合物", @@ -258,6 +259,7 @@ "ore_slurry_data.ragium.copper": "銅の鉱石泥", "ore_slurry_data.ragium.gold": "金の鉱石泥", "ore_slurry_data.ragium.iron": "鉄の鉱石泥", + "recipe_type.ragium.alloying": "合金", "recipe_type.ragium.assembling": "組立", "recipe_type.ragium.bathing": "化学洗浄", "recipe_type.ragium.brewing": "醸造", diff --git a/src/generated/resources/assets/ragium/models/block/alloy_smelter.json b/src/generated/resources/assets/ragium/models/block/alloy_smelter.json new file mode 100644 index 000000000..ae743ba33 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/alloy_smelter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/alloy_smelter_front", + "side": "ragium:block/machine/heat_side", + "top": "ragium:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index a11bac426..83152fc7d 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:alloy_smelter", "ragium:arcane_machine_casing", "ragium:assembler", "ragium:bio_machine_casing", diff --git a/src/generated/resources/data/ragium/advancement/alloy_smelter.json b/src/generated/resources/data/ragium/advancement/alloy_smelter.json new file mode 100644 index 000000000..1480a3df0 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/alloy_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "ragium:heat_machine_parts", + "criteria": { + "has_alloy_smelter": { + "conditions": { + "items": [ + { + "items": "ragium:alloy_smelter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "description": { + "translate": "advancement.ragium.alloy_smelter.desc" + }, + "icon": { + "id": "ragium:alloy_smelter" + }, + "title": { + "translate": "advancement.ragium.alloy_smelter.title" + } + }, + "requirements": [ + [ + "has_alloy_smelter" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/black_steel.json b/src/generated/resources/data/ragium/advancement/black_steel.json index 94480b5a0..5655b9bd7 100644 --- a/src/generated/resources/data/ragium/advancement/black_steel.json +++ b/src/generated/resources/data/ragium/advancement/black_steel.json @@ -1,5 +1,5 @@ { - "parent": "ragium:assembler", + "parent": "ragium:alloy_smelter", "criteria": { "has_black_steel_ingot": { "conditions": { diff --git a/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json b/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json new file mode 100644 index 000000000..98fa4cde6 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/misc/alloy_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_blast_furnace": { + "conditions": { + "items": [ + { + "items": "minecraft:blast_furnace" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:alloy_smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_blast_furnace" + ] + ], + "rewards": { + "recipes": [ + "ragium:alloy_smelter" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json b/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json new file mode 100644 index 000000000..58a1bfe4b --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/alloy_smelter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:alloy_smelter" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloy_smelter.json b/src/generated/resources/data/ragium/recipe/alloy_smelter.json new file mode 100644 index 000000000..5f9eb4e7c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloy_smelter.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/sooty_iron", + "B": "ragium:heat_machine_parts", + "C": "#c:gears/iron", + "D": "minecraft:blast_furnace" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:alloy_smelter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json similarity index 52% rename from src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json rename to src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json index 2442839c1..64347a661 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/black_steel_ingot.json +++ b/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json @@ -1,15 +1,21 @@ { - "type": "ragium:assembling", + "type": "ragium:alloying", "primary_ingredient": { "count": 1, - "items": "#c:ingots/sooty_iron" + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/sooty_iron", + "#c:ingots/sooty_iron" + ] + } }, "result": { "count": 1, "id": "ragium:black_steel_ingot" }, "secondary_ingredient": { - "count": 1, + "count": 2, "items": "#c:dusts/obsidian" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json new file mode 100644 index 000000000..3bf5a5d57 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json @@ -0,0 +1,28 @@ +{ + "type": "ragium:alloying", + "primary_ingredient": { + "count": 2, + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/black_steel", + "#c:ingots/black_steel" + ] + } + }, + "result": { + "count": 1, + "id": "ragium:chemical_machine_parts" + }, + "secondary_ingredient": { + "count": 1, + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/gold", + "#c:ingots/gold" + ] + } + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json similarity index 59% rename from src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json rename to src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json index d88bdf14f..f2ee77796 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/netherite_ingot.json +++ b/src/generated/resources/data/ragium/recipe/alloying/netherite_ingot.json @@ -1,8 +1,14 @@ { - "type": "ragium:assembling", + "type": "ragium:alloying", "primary_ingredient": { "count": 2, - "items": "#c:dusts/gold" + "items": { + "type": "neoforge:or", + "values": [ + "#c:dusts/gold", + "#c:ingots/gold" + ] + } }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json b/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json deleted file mode 100644 index d63b82b5a..000000000 --- a/src/generated/resources/data/ragium/recipe/assembling/chemical_machine_parts.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:assembling", - "primary_ingredient": { - "count": 2, - "items": "#c:ingots/black_steel" - }, - "result": { - "count": 1, - "id": "ragium:chemical_machine_parts" - }, - "secondary_ingredient": { - "count": 1, - "items": "#c:ingots/gold" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/heat.json b/src/generated/resources/data/ragium/tags/block/machines/heat.json index 9dcea7829..37431c56a 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/block/machines/heat.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:alloy_smelter", "ragium:freezer", "ragium:melter", "ragium:pyrolyzer", diff --git a/src/generated/resources/data/ragium/tags/item/machines/heat.json b/src/generated/resources/data/ragium/tags/item/machines/heat.json index 9dcea7829..37431c56a 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/heat.json +++ b/src/generated/resources/data/ragium/tags/item/machines/heat.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:alloy_smelter", "ragium:freezer", "ragium:melter", "ragium:pyrolyzer", diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt index ffeebbc92..cc60c4de2 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt @@ -9,9 +9,7 @@ import hiiragi283.lib.util.HTDelegates import net.minecraft.core.HolderSet import net.minecraft.world.level.material.Fluid import net.neoforged.neoforge.fluids.FluidType -import net.neoforged.neoforge.fluids.crafting.CompoundFluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredient -import net.neoforged.neoforge.registries.holdersets.OrHolderSet import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -43,26 +41,10 @@ class HTFluidIngredientBuilder @PublishedApi internal constructor() { ingredient = this } - /** - * @since 26.1.2 - */ - @JvmName("unaryPlusCompound") - operator fun List.unaryPlus() { - +CompoundFluidIngredient(this) - } - operator fun HolderSet.unaryPlus() { +FluidIngredient.of(this) } - /** - * @since 26.1.2 - */ - @JvmName("unaryPlusOr") - operator fun List>.unaryPlus() { - +OrHolderSet(this) - } - inline fun fluids(builderAction: HolderAcceptor.FluidSetBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt index 326c435a8..c355d73c5 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt @@ -9,9 +9,7 @@ import hiiragi283.lib.util.HTDelegates import net.minecraft.core.HolderSet import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Ingredient -import net.neoforged.neoforge.common.crafting.CompoundIngredient import net.neoforged.neoforge.common.crafting.ICustomIngredient -import net.neoforged.neoforge.registries.holdersets.OrHolderSet import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -47,20 +45,10 @@ class HTItemIngredientBuilder @PublishedApi internal constructor() { ingredient = this.toVanilla() } - @JvmName("unaryPlusCompound") - operator fun List.unaryPlus() { - +CompoundIngredient(this) - } - operator fun HolderSet.unaryPlus() { ingredient = Ingredient.of(this) } - @JvmName("unaryPlusOr") - operator fun List>.unaryPlus() { - +OrHolderSet(this) - } - inline fun items(builderAction: HolderAcceptor.ItemSetBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt index 8ba830862..3b5d09a0f 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt @@ -2,10 +2,14 @@ package hiiragi283.lib.data.recipe import hiiragi283.lib.HTConstants import hiiragi283.lib.data.ExporterDataProvider +import hiiragi283.lib.tag.CommonTagPrefixes +import hiiragi283.lib.tag.HTMaterialLike import net.minecraft.core.HolderLookup +import net.minecraft.core.HolderSet import net.minecraft.core.registries.Registries import net.minecraft.data.PackOutput import net.minecraft.resources.Identifier +import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Recipe import net.neoforged.neoforge.common.conditions.ModLoadedCondition import java.util.concurrent.CompletableFuture @@ -21,6 +25,14 @@ abstract class HTRecipeProvider( future: CompletableFuture, modId: String ) : ExporterDataProvider>(packOutput, future, Registries.RECIPE, modId, Recipe.CONDITIONAL_CODEC) { + // Extension // + + fun dustOrGem(material: HTMaterialLike): HolderSet = + setOf(CommonTagPrefixes.DUST, CommonTagPrefixes.GEM).map { it.itemTagKey(material) }.let(::holderSet) + + fun dustOrIngot(material: HTMaterialLike): HolderSet = + setOf(CommonTagPrefixes.DUST, CommonTagPrefixes.INGOT).map { it.itemTagKey(material) }.let(::holderSet) + // Integration // abstract class Integration( diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index 77950d8ae..ffbf47ebd 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -81,6 +81,10 @@ data object RagiumConfig { HTEnergyConfig.createMachine(builder, RagiumConstants.CUTTING_MACHINE) // Heat + @JvmField + val alloySmelter: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ALLOY_SMELTER) + @JvmField val freezer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.FREEZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 0b9f0a8e2..359fab2ee 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -15,6 +15,7 @@ data object RagiumConstants { const val CUTTING_MACHINE = "cutting_machine" // Heat + const val ALLOY_SMELTER = "alloy_smelter" const val FREEZER = "freezer" const val MELTER = "melter" const val PYROLYZER = "pyrolyzer" @@ -49,6 +50,7 @@ data object RagiumConstants { const val FILLING = "filling" // Heat + const val ALLOYING = "alloying" const val FREEZING = "freezing" const val MELTING = "melting" const val PYROLYZING = "pyrolyzing" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt index 9e15de2c4..fc2104daa 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt @@ -9,6 +9,7 @@ import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder import hiiragi283.lib.data.recipe.HTItemToItemAndFluidRecipeBuilder import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder 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 @@ -94,6 +95,16 @@ data object RagiumRecipeBuilders { } // Heat + @JvmStatic + inline fun alloying( + builderAction: HTDoubleItemToItemRecipeBuilder.() -> Unit + ): HTDoubleItemToItemRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return HTDoubleItemToItemRecipeBuilder(RagiumConstants.ALLOYING, ::RTAlloyingRecipe).apply(builderAction) + } + @JvmStatic inline fun freezing( builderAction: HTFluidToRecipeBuilder.ToItem.() -> Unit diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt new file mode 100644 index 000000000..6bba9fa84 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt @@ -0,0 +1,28 @@ +package hiiragi283.ragium.api.recipe + +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTItemResult +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeSerializer + +class RTAlloyingRecipe( + primary: HTItemIngredient, + secondary: HTItemIngredient, + result: HTItemResult, + progressData: HTProgressData +) : HTDoubleItemToItemRecipe.Basic(primary, secondary, result, progressData), + HTSerializableRecipe { + companion object { + @JvmField + val SERIALIZER: RecipeSerializer = + RecipeSerializer(codec(::RTAlloyingRecipe), streamCodec(::RTAlloyingRecipe)) + } + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ALLOYING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.ALLOYING +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 334942c87..fd3ba2c94 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -51,6 +51,9 @@ data object RagiumRecipeLookups { val FILLING: HTCompoundRecipeLookup = create(RagiumConstants.FILLING) // Heat + @JvmField + val ALLOYING: HTCompoundRecipeLookup = create(RagiumConstants.ALLOYING) + @JvmField val FREEZING: HTCompoundRecipeLookup = create(RagiumConstants.FREEZING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index 23e246437..358db95f9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -62,6 +62,10 @@ data object RagiumRecipeSerializers { register(RagiumConstants.FILLING, RTFillingRecipe.SERIALIZER) // Heat + @JvmField + val ALLOYING: RecipeSerializer = + register(RagiumConstants.ALLOYING, RTAlloyingRecipe.SERIALIZER) + @JvmField val FREEZING: RecipeSerializer = register(RagiumConstants.FREEZING, RTFreezingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index cee57f745..650ac5c3b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -48,6 +48,9 @@ data object RagiumRecipeTypes { val FILLING: HTRecipeType = create(RagiumConstants.FILLING) // Heat + @JvmField + val ALLOYING: HTRecipeType = create(RagiumConstants.ALLOYING) + @JvmField val FREEZING: HTRecipeType = create(RagiumConstants.FREEZING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index fce932672..29d5925da 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -219,6 +219,7 @@ data object Ragium : HTCommonMod() { registerProcessor(RagiumBlockEntityTypes.COMPRESSOR.get()) registerProcessor(RagiumBlockEntityTypes.CUTTING_MACHINE.get()) + registerProcessor(RagiumBlockEntityTypes.ALLOY_SMELTER.get()) registerProcessor(RagiumBlockEntityTypes.FREEZER.get()) registerProcessor(RagiumBlockEntityTypes.MELTER.get()) registerProcessor(RagiumBlockEntityTypes.SMELTER.get()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 549690118..c8274a53d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -80,6 +80,7 @@ internal data object RagiumCommon { RagiumRecipeLookups.DRAINING.fromRecipeType(RagiumRecipeTypes.DRAINING, identity()) RagiumRecipeLookups.FILLING.fromRecipeType(RagiumRecipeTypes.FILLING, identity()) + RagiumRecipeLookups.ALLOYING.fromRecipeType(RagiumRecipeTypes.ALLOYING, identity()) RagiumRecipeLookups.FREEZING.fromRecipeType(RagiumRecipeTypes.FREEZING, identity()) RagiumRecipeLookups.MELTING.fromRecipeType(RagiumRecipeTypes.MELTING, identity()) RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt index e3b65aec6..7af490649 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/advancment/RagiumAdvancementKeys.kt @@ -31,6 +31,9 @@ data object RagiumAdvancementKeys { @JvmField val HEAT_MACHINE_PARTS: AdvancementKey = create("heat_machine_parts") + @JvmField + val ALLOY_SMELTER: AdvancementKey = create(RagiumConstants.ALLOY_SMELTER) + @JvmField val BLACK_STEEL: AdvancementKey = create("black_steel") diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 2e03b50e5..c4743f000 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -158,6 +158,10 @@ data object RagiumBlocks { registerMachine(RagiumBlockEntityTypes.CUTTING_MACHINE) // Heat + @JvmField + val ALLOY_SMELTER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ALLOY_SMELTER) + @JvmField val FREEZER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.FREEZER) @@ -219,6 +223,7 @@ data object RagiumBlocks { put(HTMachineType.MECHANICAL, COMPRESSOR) put(HTMachineType.MECHANICAL, CUTTING_MACHINE) + put(HTMachineType.HEAT, ALLOY_SMELTER) put(HTMachineType.HEAT, FREEZER) put(HTMachineType.HEAT, MELTER) put(HTMachineType.HEAT, PYROLYZER) 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 91f6a2ce8..c0e707aab 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -7,6 +7,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.common.block.HTBasicEntityBlock import hiiragi283.ragium.common.block.RagiumBlocks +import hiiragi283.ragium.common.block.entity.machine.HTAlloySmelterBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTAssemblerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTBreweryBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTChemicalBathBlockEntity @@ -58,6 +59,10 @@ data object RagiumBlockEntityTypes { registerTick(RagiumConstants.CUTTING_MACHINE, ::HTCuttingMachineBlockEntity) // Heat + @JvmField + val ALLOY_SMELTER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.ALLOY_SMELTER, ::HTAlloySmelterBlockEntity) + @JvmField val FREEZER: HTDeferredBlockEntityType = registerTick(RagiumConstants.FREEZER, ::HTFreezerBlockEntity) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt new file mode 100644 index 000000000..6554c80f8 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTAlloySmelterBlockEntity.kt @@ -0,0 +1,23 @@ +package hiiragi283.ragium.common.block.entity.machine + +import hiiragi283.lib.sounds.HTSoundInstance +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RagiumRecipeLookups +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.machine.base.HTDoubleItemToItemBlockEntity +import net.minecraft.core.BlockPos +import net.minecraft.sounds.SoundEvents +import net.minecraft.world.level.block.state.BlockState + +class HTAlloySmelterBlockEntity(pos: BlockPos, state: BlockState) : + HTDoubleItemToItemBlockEntity( + RagiumBlockEntityTypes.ALLOY_SMELTER.get(), + RagiumRecipeLookups.ALLOYING, + pos, + state + ) { + override fun getCompletedSound(): HTSoundInstance = HTSoundInstance(SoundEvents.FIRE_EXTINGUISH) + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.alloySmelter +} From 7eb0c804a561d4281f6f7015cdaa014ddbaeabd0 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 13 Sep 2026 22:35:34 +0900 Subject: [PATCH 19/28] =?UTF-8?q?fix:=20=E5=AD=98=E5=9C=A8=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E9=87=91=E5=B1=9E=E7=B2=89=E3=81=AE=E3=82=BF?= =?UTF-8?q?=E3=82=B0=E3=82=92=E5=8F=82=E7=85=A7=E3=81=97=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/recipe/RagiumHeatRecipeProvider.kt | 4 ++-- .../data/ragium/recipe/alloying/black_steel_ingot.json | 8 +------- .../ragium/recipe/alloying/chemical_machine_parts.json | 8 +------- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index b8e1a56b4..231c41aa0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -43,7 +43,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture // Machine Casing RagiumRecipeBuilders.alloying { primary { - +dustOrIngot(RagiumMaterial.Metal.BLACK_STEEL) + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) count = 2 } secondary { +dustOrIngot(RagiumMaterial.Metal.GOLD) } @@ -51,7 +51,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture }.save(exporter) // Sooty Iron + Obsidian Dust -> Black Steel RagiumRecipeBuilders.alloying { - primary { +dustOrIngot(RagiumMaterial.Metal.SOOTY_IRON) } + primary { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } secondary { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) count = 2 diff --git a/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json index 64347a661..e4d75734e 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json +++ b/src/generated/resources/data/ragium/recipe/alloying/black_steel_ingot.json @@ -2,13 +2,7 @@ "type": "ragium:alloying", "primary_ingredient": { "count": 1, - "items": { - "type": "neoforge:or", - "values": [ - "#c:dusts/sooty_iron", - "#c:ingots/sooty_iron" - ] - } + "items": "#c:ingots/sooty_iron" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json index 3bf5a5d57..9d0a9b6b4 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json +++ b/src/generated/resources/data/ragium/recipe/alloying/chemical_machine_parts.json @@ -2,13 +2,7 @@ "type": "ragium:alloying", "primary_ingredient": { "count": 2, - "items": { - "type": "neoforge:or", - "values": [ - "#c:dusts/black_steel", - "#c:ingots/black_steel" - ] - } + "items": "#c:ingots/black_steel" }, "result": { "count": 1, From b5e7141175d24163f171bbde32b1d22090359e26 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:56:59 +0900 Subject: [PATCH 20/28] =?UTF-8?q?refactor:=20HTXXToXXRecipeCategory=20?= =?UTF-8?q?=E3=82=92=20HTSingleRecipeCategory=20=E3=81=AB=E7=B5=B1?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 17 +-- .../category/HTFluidToItemRecipeCategory.kt | 42 ------ .../category/HTItemToFluidRecipeCategory.kt | 42 ------ .../category/HTItemToItemRecipeCategory.kt | 40 ------ .../jei/category/HTSingleRecipeCategory.kt | 135 ++++++++++++++++++ .../recipe/ingredient/HTFluidIngredient.kt | 2 +- 6 files changed, 143 insertions(+), 135 deletions(-) delete mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 92b7a2102..7d036fbce 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -4,20 +4,17 @@ import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.integration.jei.HTJeiPlugin import hiiragi283.lib.integration.jei.HTJeiRecipeHelper import hiiragi283.lib.integration.jei.category.HTDoubleItemToItemRecipeCategory -import hiiragi283.lib.integration.jei.category.HTFluidToItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToDoubleItemRecipeCategory -import hiiragi283.lib.integration.jei.category.HTItemToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToItemAndFluidRecipeCategory -import hiiragi283.lib.integration.jei.category.HTItemToItemRecipeCategory +import hiiragi283.lib.integration.jei.category.HTSingleRecipeCategory import hiiragi283.lib.item.HTPotionBasedItem import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.recipe.HTOreSlurryData import hiiragi283.ragium.api.data.recipe.HTOreSlurryDataHelper import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders @@ -107,15 +104,15 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addRecipeCategories( // Mechanical HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ASSEMBLING), - HTItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), + HTSingleRecipeCategory.ItemToItem(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CRUSHING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CUTTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.DRAINING), HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ALLOYING), - HTFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), - HTItemToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MELTING), + HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), + HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), RTRefiningRecipeCategory(guiHelper), // Chemical @@ -171,12 +168,12 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { .listElements() .asSequence() .mapNotNull { input: Holder -> - val slurryData: Holder = - input.components().get(RagiumDataComponents.ORE_SLURRY_DATA) ?: return@mapNotNull null + val result: FluidStack = + HTOreSlurryDataHelper.createFluid(input.components()) ?: return@mapNotNull null RagiumRecipeBuilders.mixing { itemIngredient = HTJeiRecipeHelper.fakeItem(SlotDisplay.ItemSlotDisplay(input)) fluidIngredient = HTJeiRecipeHelper.fakeFluid(RagiumFluids.SULFURIC_ACID) - result { from(HTOreSlurryDataHelper.createFluid(slurryData)) } + result { from(result) } recipeId replace input.getKeyOrThrow().identifier().withPrefix("solving/") }.buildSynthetic() }.toList() diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt deleted file mode 100644 index 909fd5d84..000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemRecipeCategory.kt +++ /dev/null @@ -1,42 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTFluidToRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTFluidToItemRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTFluidToRecipe.BasicItem.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTFluidToRecipe.BasicItem, focuses: IFocusGroup) { - // input - recipe.ingredient.let { - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(it) - .setSlotBackground(HTBackgroundType.INPUT, it.amount) - } - // output - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTFluidToRecipe.BasicItem, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt deleted file mode 100644 index d8e17c70e..000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToFluidRecipeCategory.kt +++ /dev/null @@ -1,42 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTItemToRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTItemToFluidRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTItemToRecipe.BasicFluid.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTItemToRecipe.BasicFluid, focuses: IFocusGroup) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - recipe.result.let { - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(it) - .setSlotBackground(HTBackgroundType.OUTPUT, it.amount) - } - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTItemToRecipe.BasicFluid, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt deleted file mode 100644 index 449a7365c..000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemRecipeCategory.kt +++ /dev/null @@ -1,40 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTItemToRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTItemToItemRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 4, - 18 * 1, - HTItemToRecipe.BasicItem.SIMPLE_CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: HTItemToRecipe.BasicItem, focuses: IFocusGroup) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTItemToRecipe.BasicItem, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt new file mode 100644 index 000000000..12c938190 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt @@ -0,0 +1,135 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTFluidToRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +abstract class HTSingleRecipeCategory>( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType, + codec: MapCodec +) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 4, 18 * 1, codec) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { + // input + setInput( + builder + .addInputSlot(getPosition(0), getPosition(0)) + .setSlotBackground(HTBackgroundType.INPUT), + recipe + ) + // output + setOutput( + builder + .addInputSlot(getPosition(3), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT), + recipe + ) + } + + protected abstract fun setInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setOutput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) { + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) + } + + // FluidToFluid // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class FluidToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTFluidToRecipe.BasicFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicFluid) { + val ingredient: HTFluidIngredient = recipe.ingredient + builder.add(ingredient).setFluidSlot(ingredient.amount) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicFluid) { + val result: HTFluidResult = recipe.result + builder.add(result).setFluidSlot(result.amount) + } + } + + // FluidToItem // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class FluidToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTFluidToRecipe.BasicItem.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItem) { + val ingredient: HTFluidIngredient = recipe.ingredient + builder.add(ingredient).setFluidSlot(ingredient.amount) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItem) { + builder.add(recipe.result) + } + } + + // ItemToFluid // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class ItemToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory( + guiHelper, + recipeType, + HTItemToRecipe.BasicFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicFluid) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicFluid) { + val result: HTFluidResult = recipe.result + builder.add(result).setFluidSlot(result.amount) + } + } + + // ItemToItem // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ + class ItemToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleRecipeCategory(guiHelper, recipeType, HTItemToRecipe.BasicItem.SIMPLE_CODEC) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItem) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItem) { + builder.add(recipe.result) + } + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt index a40ec11e6..1c227a0c1 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTFluidIngredient.kt @@ -63,8 +63,8 @@ data class HTFluidIngredient(val unsized: FluidIngredient, val amount: Int) : override fun getPreviewStacks(contextMap: ContextMap): List = unsized .display() .resolve(contextMap, ForFluidStacks { it.copyWithAmount(amount) }) - .toList() .filter(HTFlowingFluidHelper::isSource) + .toList() } // Extensions // From 81dcc71752883cfffcef8958fe7396171b21c58d Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 16 Sep 2026 18:40:44 +0900 Subject: [PATCH 21/28] =?UTF-8?q?feat:=20HTRecipeBuilder=20=E3=81=A7?= =?UTF-8?q?=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=82=B7=E3=83=94ID=E3=81=AE=E7=94=9F=E6=88=90=E3=82=92?= =?UTF-8?q?=E4=BB=BB=E6=84=8F=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recipe/HTDoubleItemToItemRecipeBuilder.kt | 2 +- .../lib/data/recipe/HTFluidToRecipeBuilder.kt | 2 +- .../recipe/HTItemAndFluidToRecipeBuilder.kt | 2 +- .../recipe/HTItemToDoubleItemRecipeBuilder.kt | 2 +- .../HTItemToItemAndFluidRecipeBuilder.kt | 2 +- .../lib/data/recipe/HTItemToRecipeBuilder.kt | 2 +- .../lib/data/recipe/HTRecipeBuilder.kt | 73 ++++++++++--------- .../kotlin/hiiragi283/lib/tag/HTTagPrefix.kt | 12 +-- .../kotlin/hiiragi283/lib/util/Optionals.kt | 7 -- .../recipe/RTElectrolyzingRecipeBuilder.kt | 2 +- .../data/recipe/RTReactingRecipeBuilder.kt | 2 +- .../data/recipe/RTRefiningRecipeBuilder.kt | 2 +- .../ragium/api/tag/HTMachineType.kt | 2 +- .../kotlin/hiiragi283/ragium/common/Ragium.kt | 7 +- 14 files changed, 53 insertions(+), 66 deletions(-) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt index 08c544aef..5234a4a6c 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt @@ -20,7 +20,7 @@ import kotlin.contracts.contract */ class HTDoubleItemToItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier = result.getId() override fun createRecipe(): RECIPE = factory.create(primary, secondary, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt index 3aa037a0f..c8cc0b95b 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt @@ -18,7 +18,7 @@ abstract class HTFluidToRecipeBuilder, out RECIPE : R prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt index 84421a238..b06c7de37 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt @@ -25,7 +25,7 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - final override fun getPrimalId(): Identifier = result.getId() + final override fun getRecipeId(): Identifier = result.getId() final override fun createRecipe(): RECIPE = factory.create(itemIngredient, fluidIngredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt index 56c36006d..fb0b4cfbd 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt @@ -21,7 +21,7 @@ import kotlin.contracts.contract */ class HTItemToDoubleItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = primary.getId() + override fun getRecipeId(): Identifier = primary.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, primary, secondary, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt index 6f6bdf0ed..62e2929dd 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt @@ -21,7 +21,7 @@ import kotlin.contracts.contract */ class HTItemToItemAndFluidRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = itemResult.getId() + override fun getRecipeId(): Identifier = itemResult.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt index daae11a58..d384a09ef 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt @@ -18,7 +18,7 @@ abstract class HTItemToRecipeBuilder, out RECIPE : Re prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getPrimalId(): Identifier = result.getId() + override fun getRecipeId(): Identifier = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt index c83bab169..acb9040bc 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt @@ -11,6 +11,8 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.Identifier import net.minecraft.world.item.crafting.Recipe import net.neoforged.neoforge.common.conditions.ICondition +import java.util.function.Function +import java.util.function.UnaryOperator import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -24,6 +26,16 @@ import kotlin.contracts.contract */ @HTBuilderMarker abstract class HTRecipeBuilder>(private val prefix: String) { + /** + * デフォルトのIDを取得します。 + */ + protected abstract fun getRecipeId(): Identifier? + + /** + * レシピを生成します。 + */ + protected abstract fun createRecipe(): RECIPE + // Conditions // /** @@ -32,9 +44,6 @@ abstract class HTRecipeBuilder>(private val prefix: Strin @PublishedApi internal val conditions: MutableList = ObjectArrayList() - /** - * @since 26.1.0 - */ inline fun condition(builderAction: ConditionBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) @@ -42,39 +51,46 @@ abstract class HTRecipeBuilder>(private val prefix: Strin ConditionBuilder(conditions).apply(builderAction) } - // Save // + // Recipe Id // /** * レシピ[ID][Identifier]を保持するインスタンス */ - val recipeId: RecipeId by lazy(::RecipeId) + val recipeId: RecipeId = RecipeId() - inner class RecipeId { + class RecipeId { /** * 保持している[ID][Identifier] */ - var id: Identifier = getPrimalId() + var modifier: Function = UnaryOperator.identity() private set + /** + * @since 26.1.6 + */ + infix fun modify(operator: UnaryOperator) { + modifier = modifier.andThen(operator) + } + /** * 現在の[ID][Identifier]にプレフィックスを追加します。 */ infix fun prefix(prefix: String) { - id = id.withPrefix(prefix) + modify { id: Identifier -> id.withPrefix(prefix) } } /** * 現在の[ID][Identifier]にサフィックスを追加します。 */ infix fun suffix(suffix: String) { - id = id.withSuffix(suffix) + modify { id: Identifier -> id.withSuffix(suffix) } } /** * 現在の[ID][Identifier]を[path]で置換します。 */ infix fun replace(path: String) { - id = id.withPath(path) + modify { id: Identifier -> id.withPath(path) } } /** @@ -88,43 +104,30 @@ abstract class HTRecipeBuilder>(private val prefix: Strin * 現在の[ID][Identifier]を[newId]で置換します。 */ infix fun replace(newId: Identifier) { - id = newId + modify { _ -> newId } } } + // Exporter // + fun build(): HTRecipeHolder = build("$prefix/") fun buildSynthetic(): HTRecipeHolder = build("/$prefix/") - private fun build(prefix: String): HTRecipeHolder = - HTRecipeHolder(RecipeKey(recipeId.id.withPrefix(prefix)), createRecipe()) + private fun build(prefix: String): HTRecipeHolder = HTRecipeHolder( + getRecipeId() + ?.let(recipeId.modifier::apply) + ?.withPrefix(prefix) + ?.let(::RecipeKey) + ?: error("Could not generate default recipe id"), + createRecipe() + ) /** * レシピを生成します。 * @param exporter 生成したレシピの出力先 */ open fun save(exporter: ConditionalExporter>) { - this.save { id: RecipeKey, recipe: RECIPE -> exporter.accept(id, recipe, conditions) } + build().let { (key: RecipeKey, recipe: RECIPE) -> exporter.accept(key, recipe, conditions) } } - - /** - * 生成したレシピを処理します。 - * @param consumer 生成されたレシピIDとレシピを処理するブロック - */ - inline fun save(consumer: (id: RecipeKey, recipe: RECIPE) -> R): R { - contract { - callsInPlace(consumer, InvocationKind.EXACTLY_ONCE) - } - return build().let { (id: RecipeKey, recipe: RECIPE) -> consumer(id, recipe) } - } - - /** - * デフォルトのIDを取得します。 - */ - protected abstract fun getPrimalId(): Identifier - - /** - * レシピを生成します。 - */ - protected abstract fun createRecipe(): RECIPE } diff --git a/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt b/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt index 7cbbb9f7e..00eecf0be 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/HTTagPrefix.kt @@ -1,7 +1,6 @@ package hiiragi283.lib.tag import hiiragi283.lib.HTConstants -import net.minecraft.resources.Identifier import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block @@ -16,20 +15,11 @@ class HTTagPrefix( private val tagPattern: String, private val childNamespace: String = HTConstants.COMMON ) { - /** - * @since 26.1.4 - */ - constructor( - commonTagId: Identifier, - tagPattern: String, - childNamespace: String = HTConstants.COMMON - ) : this(BlockItemTag(commonTagId), tagPattern, childNamespace) - constructor( commonTagId: String, tagPattern: String, childNamespace: String = HTConstants.COMMON - ) : this(BlockItemTag(HTConstants.COMMON, commonTagId), tagPattern, childNamespace) + ) : this(BlockItemTag(childNamespace, commonTagId), tagPattern, childNamespace) /** * 素材の共通タグを生成します。 diff --git a/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt b/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt index 681329076..953e5957c 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/Optionals.kt @@ -36,13 +36,6 @@ fun Optional>.toMap(): Map = this.toList().toMap() */ fun Optional.fold(empty: () -> R, some: (T) -> R): R = this.map(some).getOrElse(empty) -/** - * @author Hiiragi Tsubasa - * @since 26.1.3 - */ -fun Optional.mapNotNull(transform: (T) -> R?): Optional = - this.flatMap { transform(it).toOptional() } - /** * @author Hiiragi Tsubasa * @since 26.1.3 diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt index 919c218fc..a97767dd9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTElectrolyzingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.ELECTROLYZING) { - override fun getPrimalId(): Identifier = results.first().getId() + override fun getRecipeId(): Identifier = results.first().getId() override fun createRecipe(): RTElectrolyzingRecipe = RTElectrolyzingRecipe(itemIngredient, fluidIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt index 32cea224b..b2d76278a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTReactingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REACTING) { - override fun getPrimalId(): Identifier = results.map(HTItemResult::getId, HTFluidResult::getId) + override fun getRecipeId(): Identifier = results.map(HTItemResult::getId, HTFluidResult::getId) override fun createRecipe(): RTReactingRecipe.Basic = RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt index ac7479724..8f78c8ecf 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt @@ -19,7 +19,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTRefiningRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REFINING) { - override fun getPrimalId(): Identifier = fluidResult.getId() + override fun getRecipeId(): Identifier = fluidResult.getId() override fun createRecipe(): RTRefiningRecipe = RTRefiningRecipe(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt index 55f3bab05..d731110bf 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/HTMachineType.kt @@ -25,7 +25,7 @@ enum class HTMachineType(langName: HTLangName) : companion object { @JvmField - val PREFIX = HTTagPrefix(RagiumAPI.id("machines"), "machines/%s", RagiumAPI.MOD_ID) + val PREFIX = HTTagPrefix("machines", "machines/%s", RagiumAPI.MOD_ID) } override val materialName: String get() = name.lowercase() diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 29d5925da..91a5d8000 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -39,6 +39,7 @@ import hiiragi283.ragium.common.item.RagiumItems import hiiragi283.ragium.common.item.alchemy.RagiumPotions import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket +import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponentMap import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries @@ -171,13 +172,13 @@ data object Ragium : HTCommonMod() { builder.set(DataComponents.RARITY, Rarity.EPIC) } // Item - event.modify(Items.RAW_COPPER) { builder, provider, _ -> + event.modify(Items.RAW_COPPER) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.COPPER)) } - event.modify(Items.RAW_IRON) { builder, provider, _ -> + event.modify(Items.RAW_IRON) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.IRON)) } - event.modify(Items.RAW_GOLD) { builder, provider, _ -> + event.modify(Items.RAW_GOLD) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.GOLD)) } } From d437b824b2c9a8a385565ac7660b1bde72b8e15d Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 16 Sep 2026 20:27:09 +0900 Subject: [PATCH 22/28] =?UTF-8?q?refactor!:=20HTRecipeHolder=20=E3=82=92?= =?UTF-8?q?=E3=82=A8=E3=82=A4=E3=83=AA=E3=82=A2=E3=82=B9=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/integration/jei/HTJeiRecipeHelper.kt | 8 +-- .../jei/category/HTHolderRecipeCategory.kt | 7 +- .../hiiragi283/lib/recipe/HTRecipeHolder.kt | 64 ++++++++++++++++++ .../hiiragi283/lib/recipe/RecipeExtensions.kt | 66 ------------------- .../recipe/lookup/HTCompoundRecipeLookup.kt | 7 +- .../lib/recipe/lookup/HTRecipeCache.kt | 2 - .../lib/recipe/lookup/HTRecipeLookup.kt | 5 +- .../kotlin/hiiragi283/lib/util/HTDelegates.kt | 6 +- 8 files changed, 76 insertions(+), 89 deletions(-) create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt index 311c3aa6d..bf2bbc85f 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeHelper.kt @@ -3,7 +3,6 @@ package hiiragi283.lib.integration.jei import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.item.toTemplateOrNull import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.display.SlotDisplay import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient @@ -154,10 +153,5 @@ data object HTJeiRecipeHelper { inline fun getRecipes( lookup: HTRecipeLookup ): List> = lookup.getAllRecipes(HTPhysicalSideHelper.createLookupContext()) - .mapNotNull { (key: RecipeKey, recipe: RECIPE_A) -> - when (recipe) { - is RECIPE_B -> HTRecipeHolder(key, recipe) - else -> null - } - }.toList() + .mapNotNull { holder: HTRecipeHolder -> holder.castAs() }.toList() } diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt index ad060845d..f991bd7e7 100644 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt @@ -2,12 +2,8 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.recipe.id -import hiiragi283.lib.recipe.recipe -import hiiragi283.lib.serialization.codec.HTCodecs import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.ICodecHelper @@ -15,7 +11,6 @@ import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup import mezz.jei.api.recipe.IRecipeManager import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe /** * [HTRecipeHolder]に基づいた[HTBasicRecipeCategory]の拡張クラスです。 @@ -40,7 +35,7 @@ abstract class HTHolderRecipeCategory( recipeType, width, height, - HTCodecs.mapPair(Recipe.KEY_CODEC.fieldOf(HTConstants.ID), codec).codec() + HTRecipeHolder.codec(codec) ) final override fun setRecipe(builder: IRecipeLayoutBuilder, recipe: HTRecipeHolder, focuses: IFocusGroup) { diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt new file mode 100644 index 000000000..cc9047f80 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt @@ -0,0 +1,64 @@ +package hiiragi283.lib.recipe + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import net.minecraft.world.item.crafting.RecipeHolder + +/** + * [RecipeHolder]を任意のクラスに使えるようにするためのクラスです。 + * @param RECIPE 保持するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +@JvmRecord +data class HTRecipeHolder(val key: RecipeKey, val recipe: RECIPE) { + companion object { + @JvmStatic + fun codec(recipeCodec: MapCodec): Codec> = + HTCodecs.record { instance -> + instance.group( + Recipe.KEY_CODEC.fieldOf(HTConstants.ID).forGetter(HTRecipeHolder::key), + recipeCodec.forGetter(HTRecipeHolder::recipe) + ).apply(instance, ::HTRecipeHolder) + } + } + + constructor(id: Identifier, recipe: RECIPE) : this(RecipeKey(id), recipe) + + constructor(entry: Map.Entry) : this(entry.key, entry.value) + + constructor(pair: Pair) : this(pair.first, pair.second) + + val id: Identifier get() = key.identifier() + + inline fun map(transform: (RECIPE) -> U): HTRecipeHolder = + HTRecipeHolder(this.key, transform(this.recipe)) + + inline fun mapNotNull(transform: (RECIPE) -> U?): HTRecipeHolder? = transform(this.recipe)?.let { + HTRecipeHolder(this.key, it) + } + + inline fun castAs(): HTRecipeHolder? = mapNotNull { it as? U } +} + +// Extensions // + +/** + * [RecipeHolder]を[HTRecipeHolder]に変換します。 + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +val > RecipeHolder.kotlin: HTRecipeHolder + get() = HTRecipeHolder(this.id(), this.value()) + +/** + * [HTRecipeHolder]を[RecipeHolder]に変換します。 + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +val > HTRecipeHolder.java: RecipeHolder + get() = RecipeHolder(this.key, this.recipe) diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt b/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt index 054aaf8cc..b84b83401 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/RecipeExtensions.kt @@ -6,7 +6,6 @@ import net.minecraft.core.registries.Registries import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey import net.minecraft.world.item.crafting.Recipe -import net.minecraft.world.item.crafting.RecipeHolder // RecipeKey // @@ -37,68 +36,3 @@ fun RecipeKey(namespace: String, vararg path: String): RecipeKey = RecipeKey(nam * @since 26.1.0 */ fun RecipeKey(id: Identifier): RecipeKey = Registries.RECIPE.createKey(id) - -// RecipeHolder // - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -operator fun RecipeHolder<*>.component1(): RecipeKey = this.id() - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -operator fun > RecipeHolder.component2(): R = this.value() - -// HTRecipeHolder // - -/** - * [RecipeHolder]を任意のクラスに使えるようにするためのエイリアスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -typealias HTRecipeHolder = Pair - -/** - * 新しい[HTRecipeHolder]のインスタンスを作成します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun HTRecipeHolder(id: Identifier, recipe: R): HTRecipeHolder = RecipeKey(id) to recipe - -/** - * [RecipeHolder]を[HTRecipeHolder]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun > HTRecipeHolder(holder: RecipeHolder): HTRecipeHolder = holder.id() to holder.value() - -/** - * [HTRecipeHolder]を[RecipeHolder]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun > RecipeHolder(holder: HTRecipeHolder): RecipeHolder = RecipeHolder(holder.key, holder.recipe) - -/** - * [HTRecipeHolder]が保持するレシピのID - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.key: RecipeKey get() = this.first - -/** - * [HTRecipeHolder]が保持するレシピのID - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.id: Identifier get() = this.key.identifier() - -/** - * [HTRecipeHolder]が保持するレシピ - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -val HTRecipeHolder.recipe: R get() = this.second diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt index 02c7ef7b3..25ca57b51 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTCompoundRecipeLookup.kt @@ -15,7 +15,8 @@ import net.minecraft.world.item.crafting.RecipeType * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTCompoundRecipeLookup private constructor(private val id: Identifier) : HTRecipeLookup { +class HTCompoundRecipeLookup private constructor(private val id: Identifier) : + HTRecipeLookup { companion object { @JvmStatic private val instances: MutableMap> = Object2ObjectLinkedOpenHashMap() @@ -55,14 +56,14 @@ class HTCompoundRecipeLookup private constructor(private val id: Ide * レシピの一覧を追加します。 */ fun addRecipes(vararg recipes: Pair) { - addSubLookup { recipes.asSequence() } + addSubLookup { recipes.asSequence().map(::HTRecipeHolder) } } /** * レシピの一覧を追加します。 */ fun addRecipes(recipes: Map) { - addSubLookup { recipes.asSequence().map { it.toPair() } } + addSubLookup { recipes.asSequence().map(::HTRecipeHolder) } } /** diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt index 95a7e4004..c97ec642c 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeCache.kt @@ -5,8 +5,6 @@ import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.HTRecipePredicate import hiiragi283.lib.recipe.RecipeKey -import hiiragi283.lib.recipe.key -import hiiragi283.lib.recipe.recipe import hiiragi283.lib.util.Either import hiiragi283.lib.util.unwrap import net.minecraft.server.level.ServerLevel diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt index 4cb377bdd..4cc173dd3 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/lookup/HTRecipeLookup.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.recipe.lookup import hiiragi283.lib.recipe.HTRecipeHolder +import hiiragi283.lib.recipe.kotlin import net.minecraft.core.RegistryAccess import net.minecraft.server.level.ServerLevel import net.minecraft.world.item.crafting.Recipe @@ -16,7 +17,7 @@ import net.minecraft.world.item.crafting.RecipeType * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun interface HTRecipeLookup { +fun interface HTRecipeLookup { /** * レシピの一覧を取得します。 */ @@ -42,6 +43,6 @@ fun interface HTRecipeLookup { */ fun > byType( recipeType: RecipeType - ): Sequence> = this.recipeMap.byType(recipeType).asSequence().map(::HTRecipeHolder) + ): Sequence> = this.recipeMap.byType(recipeType).asSequence().map { it.kotlin } } } diff --git a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt index 6bcfa85c1..cdf75dd9e 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt @@ -24,10 +24,10 @@ data object HTDelegates { private var value: T? = null override fun getValue(thisRef: Any?, property: KProperty<*>): T = - value ?: error("Property ${property.name} has not initialized") + value ?: error("Property ${property.name} was not initialized") override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { - check(this.value == null) { "Property ${property.name} has already initialized" } + check(this.value == null) { "Property ${property.name} has already been initialized" } this.value = value } } @@ -44,7 +44,7 @@ data object HTDelegates { override fun getValue(thisRef: Any?, property: KProperty<*>): T = value ?: defaultValue() override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { - check(this.value == null) { "Property ${property.name} has already initialized" } + check(this.value == null) { "Property ${property.name} has already been initialized" } this.value = value } } From 40cafac5a94544679402cfa8e03b9ce75e56e313 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 16 Sep 2026 21:21:33 +0900 Subject: [PATCH 23/28] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E3=83=AC=E3=82=B7=E3=83=94=E3=82=BF=E3=82=A4=E3=83=97=E3=80=8C?= =?UTF-8?q?Enchanting=20/=20=E3=82=A8=E3=83=B3=E3=83=81=E3=83=A3=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 11 +- .../integration/jei/RagiumJeiRecipeTypes.kt | 4 + .../category/RTEnchantingRecipeCategory.kt | 27 +++++ .../hiiragi283/ragium/data/RagiumDataGen.kt | 8 +- .../data/lang/RagiumEnglishLangProvider.kt | 2 + .../data/lang/RagiumJapaneseLangProvider.kt | 2 + .../data/recipe/RagiumArcaneRecipeProvider.kt | 43 +++++++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../recipe/enchanting/diamond_armor.json | 14 +++ .../ragium/recipe/enchanting/protection.json | 11 ++ .../lib/data/recipe/HTRecipeBuilder.kt | 20 ++-- .../HTDoubleItemToItemRecipeCategory.kt | 51 --------- .../category/HTDoubleItemToRecipeCategory.kt | 78 +++++++++++++ .../lib/item/component/ItemComponents.kt | 17 +++ .../data/recipe/RTEnchantingRecipeBuilder.kt | 58 ++++++++++ .../api/data/recipe/RagiumRecipeBuilders.kt | 9 ++ .../ragium/api/recipe/RTEnchantingRecipe.kt | 105 ++++++++++++++++++ .../ragium/api/recipe/RagiumRecipeLookups.kt | 2 + .../api/recipe/RagiumRecipeSerializers.kt | 3 + .../ragium/api/recipe/RagiumRecipeTypes.kt | 2 + 21 files changed, 399 insertions(+), 70 deletions(-) create mode 100644 src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt create mode 100644 src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt create mode 100644 src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json create mode 100644 src/generated/resources/data/ragium/recipe/enchanting/protection.json delete mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 7d036fbce..6d9985c3e 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.integration.jei.HTJeiPlugin import hiiragi283.lib.integration.jei.HTJeiRecipeHelper -import hiiragi283.lib.integration.jei.category.HTDoubleItemToItemRecipeCategory +import hiiragi283.lib.integration.jei.category.HTDoubleItemToRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToDoubleItemRecipeCategory @@ -21,6 +21,7 @@ import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTRefiningRecipeCategory import hiiragi283.ragium.common.block.RagiumBlocks @@ -103,14 +104,14 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.addRecipeCategories( // Mechanical - HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ASSEMBLING), + HTDoubleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ASSEMBLING), HTSingleRecipeCategory.ItemToItem(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CRUSHING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CUTTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.DRAINING), HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat - HTDoubleItemToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.ALLOYING), + HTDoubleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ALLOYING), HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), @@ -122,9 +123,10 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { RTReactingRecipeCategory(guiHelper), // Bio HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BREWING), - HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING) + HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING), // Electronics // Arcane + RTEnchantingRecipeCategory(guiHelper) ) } @@ -156,6 +158,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PLANTING, RagiumRecipeLookups.PLANTING) // Electronics // Arcane + HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.ENCHANTING, RagiumRecipeLookups.ENCHANTING) registerDynamicRecipes(registration) } 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 21d10a08e..f4da070c5 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -9,6 +9,7 @@ import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe +import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes @@ -90,4 +91,7 @@ data object RagiumJeiRecipeTypes { // Electronics // Arcane + @JvmField + val ENCHANTING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.ENCHANTING, RagiumBlocks.MACHINE_CASING) } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt new file mode 100644 index 000000000..5c79c56d4 --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt @@ -0,0 +1,27 @@ +package hiiragi283.ragium.client.integration.jei.category + +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.integration.jei.category.HTDoubleItemToRecipeCategory +import hiiragi283.ragium.api.recipe.RTEnchantingRecipe +import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.helpers.IGuiHelper + +class RTEnchantingRecipeCategory(guiHelper: IGuiHelper) : + HTDoubleItemToRecipeCategory( + guiHelper, + RagiumJeiRecipeTypes.ENCHANTING, + RTEnchantingRecipe.CODEC + ) { + override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(RTEnchantingRecipe.BOOK_INGREDIENT) + } + + override fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(recipe.ingredient) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { + builder.add(recipe.result.create()) + } +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 7cfbc03dd..76360372a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -10,6 +10,7 @@ import hiiragi283.ragium.data.loot.RagiumBlockLootTableProvider import hiiragi283.ragium.data.loot.RagiumGlobalLootModifierProvider import hiiragi283.ragium.data.loot.RagiumGlobalLootTableProvider import hiiragi283.ragium.data.model.RagiumModelProvider +import hiiragi283.ragium.data.recipe.RagiumArcaneRecipeProvider import hiiragi283.ragium.data.recipe.RagiumBioRecipeProvider import hiiragi283.ragium.data.recipe.RagiumChemicalRecipeProvider import hiiragi283.ragium.data.recipe.RagiumCommonRecipeProvider @@ -52,11 +53,12 @@ data object RagiumDataGen { event.createProvider(RagiumVanillaRecipeProvider::Runner) event.createProvider(::RagiumCommonRecipeProvider) + event.createProvider(::RagiumMechanicalRecipeProvider) + event.createProvider(::RagiumHeatRecipeProvider) + event.createProvider(::RagiumChemicalRecipeProvider) event.createProvider(::RagiumBioRecipeProvider) event.createProvider(::RagiumElectronicsRecipeProvider) - event.createProvider(::RagiumChemicalRecipeProvider) - event.createProvider(::RagiumHeatRecipeProvider) - event.createProvider(::RagiumMechanicalRecipeProvider) + event.createProvider(::RagiumArcaneRecipeProvider) event.createProvider(::RagiumRecipePriorityProvider) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 498026d97..d3eddca80 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -150,6 +150,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.BREWING, "Brewing") add(RagiumRecipeTypes.PLANTING, "Planting") + add(RagiumRecipeTypes.ENCHANTING, "Enchanting") + // Text - Lib add(HTCommonTranslation.ERROR, "Error") add(HTCommonTranslation.INFINITE, "Infinite") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 69fb4ae6c..51992d14a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -146,6 +146,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.BREWING, "醸造") add(RagiumRecipeTypes.PLANTING, "栽培") + add(RagiumRecipeTypes.ENCHANTING, "エンチャント") + // Text - Lib add(HTCommonTranslation.ERROR, "エラー") add(HTCommonTranslation.INFINITE, "無限") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt new file mode 100644 index 000000000..3c19cb611 --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.data.recipe + +import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.tag.CommonTagPrefixes +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.material.RagiumMaterial +import net.minecraft.core.HolderLookup +import net.minecraft.data.PackOutput +import net.minecraft.world.item.enchantment.Enchantments +import java.util.concurrent.CompletableFuture + +class RagiumArcaneRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : + HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { + override fun exportValues() { + enchanting() + } + + private fun enchanting() { + // Iron -> Protection + RagiumRecipeBuilders.enchanting { + ingredient { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) + count = 64 + } + +registries.getOrThrow(Enchantments.PROTECTION) + }.save(exporter) + // Diamond -> Protection + Unbreaking + RagiumRecipeBuilders.enchanting { + ingredient { + +holderSet(CommonTagPrefixes.GEM, RagiumMaterial.Gem.DIAMOND) + count = 16 + } + result { + set(registries.getOrThrow(Enchantments.PROTECTION), 4) + set(registries.getOrThrow(Enchantments.UNBREAKING), 3) + } + recipeId replace id("diamond_armor") + }.save(exporter) + } + + override fun getName(): String = "Arcane Recipes" +} diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index bc3171d37..68294555e 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -268,6 +268,7 @@ "recipe_type.ragium.cutting": "Cutting", "recipe_type.ragium.draining": "Draining", "recipe_type.ragium.electrolyzing": "Electrolyzing", + "recipe_type.ragium.enchanting": "Enchanting", "recipe_type.ragium.filling": "Filling", "recipe_type.ragium.freezing": "Freezing", "recipe_type.ragium.melting": "Melting", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 107862dd5..8d0cd9c9d 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -268,6 +268,7 @@ "recipe_type.ragium.cutting": "切断", "recipe_type.ragium.draining": "排出", "recipe_type.ragium.electrolyzing": "電気分解", + "recipe_type.ragium.enchanting": "エンチャント", "recipe_type.ragium.filling": "封入", "recipe_type.ragium.freezing": "冷凍", "recipe_type.ragium.melting": "溶融", diff --git a/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json b/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json new file mode 100644 index 000000000..e74fcc159 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/enchanting/diamond_armor.json @@ -0,0 +1,14 @@ +{ + "type": "ragium:enchanting", + "ingredient": { + "count": 16, + "items": "#c:gems/diamond" + }, + "result": { + "enchantments": { + "minecraft:protection": 4, + "minecraft:unbreaking": 3 + } + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/enchanting/protection.json b/src/generated/resources/data/ragium/recipe/enchanting/protection.json new file mode 100644 index 000000000..a3f0f8589 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/enchanting/protection.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:enchanting", + "ingredient": { + "count": 64, + "items": "#c:ingots/iron" + }, + "result": { + "id": "minecraft:protection" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt index acb9040bc..babfc271d 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt @@ -7,12 +7,11 @@ import hiiragi283.lib.data.ConditionalExporter import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.util.HTBuilderMarker +import hiiragi283.lib.util.Identity import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.Identifier import net.minecraft.world.item.crafting.Recipe import net.neoforged.neoforge.common.conditions.ICondition -import java.util.function.Function -import java.util.function.UnaryOperator import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -58,18 +57,19 @@ abstract class HTRecipeBuilder>(private val prefix: Strin */ val recipeId: RecipeId = RecipeId() - class RecipeId { + inner class RecipeId { /** * 保持している[ID][Identifier] */ - var modifier: Function = UnaryOperator.identity() + var defaultId: () -> Identifier = { getRecipeId() ?: error("Could not generate default recipe id") } private set /** * @since 26.1.6 */ - infix fun modify(operator: UnaryOperator) { - modifier = modifier.andThen(operator) + infix fun modify(operator: Identity) { + val defaultId1: () -> Identifier = defaultId + defaultId = { defaultId1().let(operator) } } /** @@ -104,7 +104,7 @@ abstract class HTRecipeBuilder>(private val prefix: Strin * 現在の[ID][Identifier]を[newId]で置換します。 */ infix fun replace(newId: Identifier) { - modify { _ -> newId } + defaultId = { newId } } } @@ -115,11 +115,7 @@ abstract class HTRecipeBuilder>(private val prefix: Strin fun buildSynthetic(): HTRecipeHolder = build("/$prefix/") private fun build(prefix: String): HTRecipeHolder = HTRecipeHolder( - getRecipeId() - ?.let(recipeId.modifier::apply) - ?.withPrefix(prefix) - ?.let(::RecipeKey) - ?: error("Could not generate default recipe id"), + recipeId.defaultId().withPrefix(prefix).let(::RecipeKey), createRecipe() ) diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt deleted file mode 100644 index 617c2b908..000000000 --- a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToItemRecipeCategory.kt +++ /dev/null @@ -1,51 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTDoubleItemToItemRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType -) : HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 6, - 18 * 1, - HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC -) { - override fun setupRecipe( - builder: IRecipeLayoutBuilder, - recipe: HTDoubleItemToItemRecipe.Basic, - focuses: IFocusGroup - ) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.primary) - .setSlotBackground(HTBackgroundType.INPUT) - builder - .addInputSlot(getPosition(2), getPosition(0)) - .add(recipe.secondary) - .setSlotBackground(HTBackgroundType.EXTRA_INPUT) - // output - builder - .addOutputSlot(getPosition(5), getPosition(0)) - .add(recipe.result) - .setSlotBackground(HTBackgroundType.OUTPUT) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTDoubleItemToItemRecipe.Basic, - focuses: IFocusGroup - ) { - builder.addRecipePlus(getPosition(1)) - builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt new file mode 100644 index 000000000..acec6253a --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt @@ -0,0 +1,78 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressRecipe +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +abstract class HTDoubleItemToRecipeCategory>( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType, + codec: MapCodec +) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 6, 18 * 1, codec) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { + // input + setPrimaryInput( + builder + .addInputSlot(getPosition(0), getPosition(0)) + .setSlotBackground(HTBackgroundType.INPUT), + recipe + ) + setSecondaryInput( + builder + .addInputSlot(getPosition(2), getPosition(0)) + .setSlotBackground(HTBackgroundType.EXTRA_INPUT), + recipe + ) + // output + setOutput( + builder + .addOutputSlot(getPosition(5), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT), + recipe + ) + } + + protected abstract fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + protected abstract fun setOutput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + } + + // Basic // + + class Basic(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTDoubleItemToRecipeCategory( + guiHelper, + recipeType, + HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC + ) { + override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.primary) + } + + override fun setSecondaryInput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.secondary) + } + + override fun setOutput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { + builder.add(recipe.result) + } + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt b/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt index 1ab34ab90..62eb1bccc 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/component/ItemComponents.kt @@ -15,6 +15,7 @@ import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.item.component.Consumable import net.minecraft.world.item.component.ItemAttributeModifiers +import net.minecraft.world.item.enchantment.ItemEnchantments import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -51,6 +52,22 @@ inline fun buildItemAttributeModifiers( return ItemAttributeModifiers.builder().apply(builderAction).build() } +// ItemEnchantments // + +/** + * @author Hiiragi Tsubasa + * @since 26.1.6 + */ +inline fun buildItemEnchantments( + parent: ItemEnchantments = ItemEnchantments.EMPTY, + builderAction: ItemEnchantments.Mutable.() -> Unit +): ItemEnchantments { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return ItemEnchantments.Mutable(parent).apply(builderAction).toImmutable() +} + // PotionContents // /** diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt new file mode 100644 index 000000000..59df62bc5 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt @@ -0,0 +1,58 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe + +import hiiragi283.lib.data.recipe.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.item.component.buildItemEnchantments +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.registry.getKeyOrThrow +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.HTDelegates +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTEnchantingRecipe +import net.minecraft.core.Holder +import net.minecraft.resources.Identifier +import net.minecraft.world.item.enchantment.Enchantment +import net.minecraft.world.item.enchantment.ItemEnchantments +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTEnchantingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.ENCHANTING) { + override fun getRecipeId(): Identifier? = result.content.mapLeft { it.getKeyOrThrow().identifier() }.leftOrNull() + + override fun createRecipe(): RTEnchantingRecipe = RTEnchantingRecipe(ingredient, result, progressData) + + // Ingredient + @PublishedApi internal var ingredient: HTItemIngredient by HTDelegates.onceInitialize() + + operator fun HTItemIngredient.unaryPlus() { + ingredient = this + } + + inline fun ingredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal var result: RTEnchantingRecipe.EnchantmentResult by HTDelegates.onceInitialize() + + operator fun Holder.unaryPlus() { + result = RTEnchantingRecipe.EnchantmentResult(Either.Left(this)) + } + + operator fun ItemEnchantments.unaryPlus() { + result = RTEnchantingRecipe.EnchantmentResult(Either.Right(this)) + } + + inline fun result(builderAction: ItemEnchantments.Mutable.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +buildItemEnchantments(builderAction = builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt index fc2104daa..94609b870 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt @@ -200,4 +200,13 @@ data object RagiumRecipeBuilders { } return HTItemToDoubleItemRecipeBuilder(RagiumConstants.PLANTING, ::RTPlantingRecipe).apply(builderAction) } + + // Arcane + @JvmStatic + inline fun enchanting(builderAction: RTEnchantingRecipeBuilder.() -> Unit): RTEnchantingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTEnchantingRecipeBuilder().apply(builderAction) + } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt new file mode 100644 index 000000000..b1e0ecc90 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt @@ -0,0 +1,105 @@ +package hiiragi283.ragium.api.recipe + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.data.buildDataPatch +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.component.buildItemEnchantments +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.base.HTRecipeFactories +import hiiragi283.lib.recipe.base.HTRecipePredicates +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.util.Either +import hiiragi283.lib.util.unwrap +import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponents +import net.minecraft.core.registries.Registries +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.Ingredient +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.enchantment.Enchantment +import net.minecraft.world.item.enchantment.ItemEnchantments + +@JvmRecord +data class RTEnchantingRecipe( + val ingredient: HTItemIngredient, + val result: EnchantmentResult, + override val progressData: HTProgressData +) : HTRecipePredicates.DoubleItem, + HTRecipeFactories.DoubleItem, + HTProgressRecipe.Simple, + HTSerializableRecipe { + companion object { + @JvmField + val BOOK_INGREDIENT = HTItemIngredient(Ingredient.of(Items.BOOK), 1) + + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTItemIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(RTEnchantingRecipe::ingredient), + EnchantmentResult.CODEC.fieldOf(HTConstants.RESULT).forGetter(RTEnchantingRecipe::result), + HTProgressData.CODEC.forGetter(RTEnchantingRecipe::progressData) + ).apply(instance, ::RTEnchantingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTItemIngredient.STREAM_CODEC, + RTEnchantingRecipe::ingredient, + EnchantmentResult.STREAM_CODEC, + RTEnchantingRecipe::result, + HTProgressData.STREAM_CODEC, + RTEnchantingRecipe::progressData, + ::RTEnchantingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + } + + override fun test(first: ItemInstance, second: ItemInstance): Boolean = + BOOK_INGREDIENT.test(first) && ingredient.test(second) + + override fun apply(first: ItemInstance, second: ItemInstance): ItemStack = result.create() + + override fun getRequiredAmount(first: ItemInstance, second: ItemInstance): Pair = + BOOK_INGREDIENT.getRequiredAmount(first) to ingredient.getRequiredAmount(second) + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ENCHANTING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.ENCHANTING + + // EnchantmentResult // + + @JvmRecord + data class EnchantmentResult(val content: Either, ItemEnchantments>) { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.mapEither( + HTCodecs.holder(Registries.ENCHANTMENT).fieldOf(HTConstants.ID), + ItemEnchantments.CODEC.fieldOf("enchantments") + ).xmap(::EnchantmentResult, EnchantmentResult::content) + + @JvmField + val STREAM_CODEC: StreamCodec = HTStreamCodecs + .either(HTStreamCodecs.holder(Registries.ENCHANTMENT), ItemEnchantments.STREAM_CODEC) + .map(::EnchantmentResult, EnchantmentResult::content) + } + + fun create(): ItemStack = content + .mapLeft { holder: Holder -> buildItemEnchantments { set(holder, holder.value().maxLevel) } } + .unwrap() + .let { buildDataPatch { set(DataComponents.STORED_ENCHANTMENTS, it) } } + .let { ItemStack(Items.ENCHANTED_BOOK, 1, it) } + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index fd3ba2c94..c37cbb7bd 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -89,4 +89,6 @@ data object RagiumRecipeLookups { // Electronics // Arcane + @JvmField + val ENCHANTING: HTRecipeLookup = create(RagiumRecipeTypes.ENCHANTING) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index 358db95f9..ccf6df41b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -111,4 +111,7 @@ data object RagiumRecipeSerializers { // Electronics // Arcane + @JvmField + val ENCHANTING: RecipeSerializer = + register(RagiumConstants.ENCHANTING, RTEnchantingRecipe.SERIALIZER) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 650ac5c3b..1890c0b0b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -86,4 +86,6 @@ data object RagiumRecipeTypes { // Electronics // Arcane + @JvmField + val ENCHANTING: HTRecipeType = create(RagiumConstants.ENCHANTING) } From a73c9cd7a07e29095759d6bf6f3add0d3ce18c9b Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 16 Sep 2026 22:53:17 +0900 Subject: [PATCH 24/28] =?UTF-8?q?refactor:=20`BottledPotionContents.isEmpt?= =?UTF-8?q?y=20=3D=3D=20true`=20=E3=81=AE=E5=A0=B4=E5=90=88=EF=BC=8C?= =?UTF-8?q?=E7=A9=BA=E3=81=AE=E3=82=B9=E3=82=BF=E3=83=83=E3=82=AF=E3=82=92?= =?UTF-8?q?=E8=BF=94=E3=81=99=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/data/DataComponentSetter.kt | 78 ------------------- .../hiiragi283/lib/item/HTPotionBasedItem.kt | 12 +++ .../lib/item/alchemy/BottledPotionContents.kt | 28 ++++--- .../lib/item/alchemy/HTPotionFluidManager.kt | 11 +-- .../lib/item/alchemy/HTPotionHelper.kt | 15 ++-- .../ragium/api/recipe/RTEnchantingRecipe.kt | 6 +- .../common/recipe/RTLingeringBrewingRecipe.kt | 9 +-- .../common/recipe/RTSplashBrewingRecipe.kt | 8 +- 8 files changed, 48 insertions(+), 119 deletions(-) delete mode 100644 src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt diff --git a/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt b/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt deleted file mode 100644 index b5cf00a5c..000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/DataComponentSetter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package hiiragi283.lib.data - -import net.minecraft.core.component.DataComponentMap -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.core.component.DataComponentType -import net.neoforged.neoforge.common.MutableDataComponentHolder - -/** - * [DataComponentType]に基づいて値を保存する処理を表すインターフェースです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -interface DataComponentSetter { - operator fun set(type: DataComponentType, value: T) - - fun remove(type: DataComponentType) - - fun setOrRemove(type: DataComponentType, value: T?) { - when (value) { - null -> remove(type) - else -> set(type, value) - } - } -} - -/** - * [DataComponentMap.Builder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(builder: DataComponentMap.Builder): DataComponentSetter = MapDataComponentSetter(builder) - -@JvmRecord -private data class MapDataComponentSetter(val builder: DataComponentMap.Builder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - builder.set(type, value) - } - - override fun remove(type: DataComponentType) { - builder.set(type, null) - } -} - -/** - * [DataComponentPatch.Builder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(builder: DataComponentPatch.Builder): DataComponentSetter = PatchDataComponentSetter(builder) - -@JvmRecord -private data class PatchDataComponentSetter(val builder: DataComponentPatch.Builder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - builder.set(type, value) - } - - override fun remove(type: DataComponentType) { - builder.remove(type) - } -} - -/** - * [MutableDataComponentHolder]を[DataComponentSetter]に変換します。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -fun DataComponentSetter(holder: MutableDataComponentHolder): DataComponentSetter = HolderDataComponentSetter(holder) - -@JvmRecord -private data class HolderDataComponentSetter(val holder: MutableDataComponentHolder) : DataComponentSetter { - override fun set(type: DataComponentType, value: T) { - holder.set(type, value) - } - - override fun remove(type: DataComponentType) { - holder.remove(type) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt index fa86b474f..dfd6a3846 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt @@ -1,13 +1,18 @@ package hiiragi283.lib.item import hiiragi283.lib.item.alchemy.BottledPotionContents +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.ragium.api.data.RagiumDataComponents import net.minecraft.core.Holder import net.minecraft.core.HolderLookup +import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.alchemy.PotionContents +import net.minecraft.world.item.alchemy.Potions /** * ポーションに基づいた[Item]の拡張クラスです。 @@ -18,6 +23,13 @@ open class HTPotionBasedItem(properties: Properties) : Item(properties), HTSubCreativeTabContents { + override fun getDefaultInstance(): ItemStack { + val stack: ItemStack = super.getDefaultInstance() + stack[DataComponents.POTION_CONTENTS] = PotionContents(Potions.WATER) + stack[RagiumDataComponents.BOTTLE_TYPE] = HTBottleType.DEFAULT + return stack + } + override fun getCreatorModId(registries: HolderLookup.Provider, itemStack: ItemStack): String? = HTPotionHelper.getPotionModId(itemStack) ?: super.getCreatorModId(registries, itemStack) diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt index 7a3315506..38e819a10 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt @@ -2,6 +2,8 @@ package hiiragi283.lib.item.alchemy import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec +import hiiragi283.lib.fluid.createOrEmpty +import hiiragi283.lib.item.createOrEmpty import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.text.HTHasText import hiiragi283.lib.text.Text @@ -88,7 +90,7 @@ data class BottledPotionContents @JvmOverloads constructor( /** * 保持しているエフェクトが空かどうか */ - val isEmpty: Boolean get() = contents == PotionContents.EMPTY || allEffects.none() + val isEmpty: Boolean get() = HTPotionHelper.isEmpty(contents) /** * 保持しているエフェクトが水に一致するかどうか @@ -100,42 +102,46 @@ data class BottledPotionContents @JvmOverloads constructor( * @param amount 液体量 * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション */ - fun toFluidTemplate(amount: Int = FluidType.BUCKET_VOLUME): FluidStackTemplate = when (this.isWater) { - true -> FluidStackTemplate(Fluids.WATER, amount) + fun toFluidTemplate(amount: Int = FluidType.BUCKET_VOLUME): FluidStackTemplate? = when { + this.isEmpty -> null - false -> HTPotionFluidAccess.INSTANCE.fluidContent.toTemplate( + this.isWater -> FluidStackTemplate(Fluids.WATER, amount) + + else -> HTPotionFluidAccess.INSTANCE.fluidContent.toTemplate( amount, HTPotionHelper.createFluidPatch( HTPotionFluidAccess.INSTANCE.fluidContent.getOrThrow(), this@BottledPotionContents ) ) - }!! + } /** * [FluidStack]に変換します。 * @param amount 液体量 * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション */ - fun toFluidStack(amount: Int = FluidType.BUCKET_VOLUME): FluidStack = toFluidTemplate(amount).create() + fun toFluidStack(amount: Int = FluidType.BUCKET_VOLUME): FluidStack = toFluidTemplate(amount).createOrEmpty() /** * [ItemStackTemplate]に変換します。 * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ */ - fun toBucketTemplate(): ItemStackTemplate = when (this.isWater) { - true -> ItemStackTemplate(Items.WATER_BUCKET) + fun toBucketTemplate(): ItemStackTemplate? = when { + this.isEmpty -> null - false -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate( + this.isWater -> ItemStackTemplate(Items.WATER_BUCKET) + + else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate( patch = HTPotionHelper.createItemPatch(this@BottledPotionContents) ) - }!! + } /** * [ItemStack]に変換します。 * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ */ - fun toBucketStack(): ItemStack = toBucketTemplate().create() + fun toBucketStack(): ItemStack = toBucketTemplate().createOrEmpty() override fun getText(): Text = contents.getName("${bottleType.asItem().descriptionId}.effect.") } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt index 03b92af27..3630ca1e3 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt @@ -1,6 +1,5 @@ package hiiragi283.lib.item.alchemy -import hiiragi283.lib.data.DataComponentSetter import hiiragi283.ragium.api.data.RagiumDataComponents import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap import net.minecraft.core.component.DataComponentGetter @@ -52,18 +51,14 @@ data object HTPotionFluidManager { override fun get(getter: DataComponentGetter): HTBottleType? = getter.get(RagiumDataComponents.BOTTLE_TYPE) - override fun set(setter: DataComponentSetter, bottleType: HTBottleType) { - setter[RagiumDataComponents.BOTTLE_TYPE] = bottleType + override fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) { + builder[RagiumDataComponents.BOTTLE_TYPE] = bottleType } } } operator fun get(getter: DataComponentGetter): HTBottleType? - operator fun set(setter: DataComponentSetter, bottleType: HTBottleType) - - operator fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) { - set(DataComponentSetter(builder), bottleType) - } + operator fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) } } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt index 821dc1cc1..8cdffe002 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt @@ -1,6 +1,5 @@ package hiiragi283.lib.item.alchemy -import hiiragi283.lib.data.DataComponentSetter import hiiragi283.lib.data.buildDataPatch import hiiragi283.lib.item.ItemInstanceBuilder import net.minecraft.core.Holder @@ -25,6 +24,15 @@ import kotlin.jvm.optionals.getOrNull * @since 26.1.0 */ data object HTPotionHelper { + /** + * 指定した[contents]が空かどうか判定します。 + * @return [contents]が[PotionContents.EMPTY]と同じ場合,またはポーションもカスタムエフェクトもない場合は`true` + * @since 26.1.6 + */ + @JvmStatic + fun isEmpty(contents: PotionContents): Boolean = + contents == PotionContents.EMPTY || (contents.potion().isEmpty && contents.customEffects.isEmpty()) + // DataComponentGetter // /** @@ -35,11 +43,6 @@ data object HTPotionHelper { fun getPotion(getter: DataComponentGetter): PotionContents = getter.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY) - @JvmStatic - fun setPotion(setter: DataComponentSetter, contents: PotionContents?) { - setter.setOrRemove(DataComponents.POTION_CONTENTS, contents) - } - /** * 指定した[getter]からポーションのMod IDを取得します。 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt index b1e0ecc90..bdd1511f3 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt @@ -7,10 +7,9 @@ import hiiragi283.lib.item.ItemStack import hiiragi283.lib.item.component.buildItemEnchantments import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.base.HTRecipeFactories -import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs @@ -35,8 +34,7 @@ data class RTEnchantingRecipe( val ingredient: HTItemIngredient, val result: EnchantmentResult, override val progressData: HTProgressData -) : HTRecipePredicates.DoubleItem, - HTRecipeFactories.DoubleItem, +) : HTDoubleItemToItemRecipe, HTProgressRecipe.Simple, HTSerializableRecipe { companion object { diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt index cc18847a6..cef681716 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.common.recipe -import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe @@ -19,11 +18,9 @@ data object RTLingeringBrewingRecipe : HTItemAndFluidToFluidRecipe { else -> second.amount() >= FluidType.BUCKET_VOLUME } - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack { - val contents: BottledPotionContents = HTPotionHelper.getContents(second) ?: return FluidStack.EMPTY - if (!contents.isWater && contents.isEmpty) return FluidStack.EMPTY - return contents.copy(bottleType = HTBottleType.LINGERING).toFluidStack() - } + override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = + HTPotionHelper.getContents(second)?.copy(bottleType = HTBottleType.LINGERING)?.toFluidStack() + ?: FluidStack.EMPTY override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = when (test(first, second)) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt index 4f54d41c1..2cffb22e6 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.common.recipe -import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe @@ -19,11 +18,8 @@ data object RTSplashBrewingRecipe : HTItemAndFluidToFluidRecipe { else -> second.amount() >= FluidType.BUCKET_VOLUME } - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack { - val contents: BottledPotionContents = HTPotionHelper.getContents(second) ?: return FluidStack.EMPTY - if (!contents.isWater && contents.isEmpty) return FluidStack.EMPTY - return contents.copy(bottleType = HTBottleType.SPLASH).toFluidStack() - } + override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = + HTPotionHelper.getContents(second)?.copy(bottleType = HTBottleType.SPLASH)?.toFluidStack() ?: FluidStack.EMPTY override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = when (test(first, second)) { From 97578f0667dd5e41d2d65b2f08d4abe1e78d429e Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 16 Sep 2026 22:54:27 +0900 Subject: [PATCH 25/28] =?UTF-8?q?fix:=20=E6=AD=AF=E8=BB=8A=E3=81=AE?= =?UTF-8?q?=E7=B2=89=E7=A0=95=E3=83=AC=E3=82=B7=E3=83=94=E3=81=AB=E3=81=8A?= =?UTF-8?q?=E3=81=91=E3=82=8B=E5=AE=8C=E6=88=90=E5=93=81=E3=81=AE=E5=80=8B?= =?UTF-8?q?=E6=95=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/recipe/RagiumMechanicalRecipeProvider.kt | 5 ++++- .../data/ragium/recipe/crushing/copper_dust_from_gear.json | 2 +- .../data/ragium/recipe/crushing/diamond_dust_from_gear.json | 2 +- .../data/ragium/recipe/crushing/emerald_dust_from_gear.json | 2 +- .../data/ragium/recipe/crushing/gold_dust_from_gear.json | 2 +- .../data/ragium/recipe/crushing/iron_dust_from_gear.json | 2 +- .../ragium/recipe/crushing/netherite_dust_from_gear.json | 2 +- .../data/ragium/recipe/crushing/wood_dust_from_gear.json | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index d0cd3df33..cc6a04da8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -448,7 +448,10 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable if (RagiumItems.MATERIAL_ITEMS.contains(HTItemPart.GEAR, material)) { RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.GEAR, material) } - primary { +dust } + primary { + +dust + count = 4 + } recipeId suffix "_from_gear" }.save(exporter) } diff --git a/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json index 31517ccd1..6b6b81227 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/copper" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:copper_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json index 1d0cb952b..15464b9dd 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/diamond" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:diamond_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json index 4acf90fae..1db7a0044 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/emerald_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/emerald" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:emerald_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json index 11768d875..f9923e955 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/gold" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:gold_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json index 7276971e8..336009a45 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/iron" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:iron_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json index 1e8458f20..f128317d6 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/netherite_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/netherite" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:netherite_dust" }, "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json index 79282068b..9026f244e 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json +++ b/src/generated/resources/data/ragium/recipe/crushing/wood_dust_from_gear.json @@ -5,7 +5,7 @@ "items": "#c:gears/wood" }, "primary_result": { - "count": 1, + "count": 4, "id": "ragium:wood_dust" }, "time": 200 From b93f91e392bec8fb7c6d473462b181f12ed2cd49 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 17 Sep 2026 21:46:38 +0900 Subject: [PATCH 26/28] Rework potion fluids (#73) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 新しいアイテム「Splash Bottle / スプラッシュ瓶」「Lingering Bottle / 残留瓶」を追加 feat!: 液体ポーションの管理方式を変更 * feat: 空の瓶とポーション入り瓶を相互に変換するレシピを追加 * feat: ポーション瓶のモデルを追加 --- .../hiiragi283/ragium/client/RagiumClient.kt | 2 +- .../client/event/RagiumClientEventHandler.kt | 2 +- .../client/integration/jei/RagiumJeiPlugin.kt | 77 ++++++-- .../data/lang/RagiumEnglishLangProvider.kt | 4 +- .../data/lang/RagiumJapaneseLangProvider.kt | 4 +- .../ragium/data/model/RagiumModelProvider.kt | 12 ++ .../recipe/RagiumVanillaRecipeProvider.kt | 18 ++ .../assets/ragium/items/lingering_bottle.json | 6 + .../assets/ragium/items/splash_bottle.json | 6 + .../resources/assets/ragium/lang/en_us.json | 3 +- .../resources/assets/ragium/lang/ja_jp.json | 3 +- .../ragium/models/item/lingering_bottle.json | 6 + .../ragium/models/item/splash_bottle.json | 6 + .../recipes/brewing/lingering_bottle.json | 32 ++++ .../recipes/brewing/splash_bottle.json | 32 ++++ .../recipe/brewing/potion/darkness.json | 18 +- .../potion/enchanted_golden_apple.json | 54 +++--- .../recipe/brewing/potion/golden_apple.json | 32 ++-- .../ragium/recipe/brewing/potion/hunger.json | 18 +- .../data/ragium/recipe/lingering_bottle.json | 15 ++ .../data/ragium/recipe/splash_bottle.json | 15 ++ .../lib/data/recipe/HTFluidResultBuilder.kt | 7 +- .../hiiragi283/lib/item/HTPotionBasedItem.kt | 17 +- .../lib/item/alchemy/BottledPotionContents.kt | 147 --------------- .../lib/item/alchemy/HTBottleType.kt | 39 ++-- .../lib/item/alchemy/HTPotionFluidAccess.kt | 16 ++ .../lib/item/alchemy/HTPotionFluidManager.kt | 64 ------- .../lib/item/alchemy/HTPotionHelper.kt | 173 ++++++++---------- .../lib/recipe/display/HTPotionSlotDisplay.kt | 102 ----------- .../ingredient/HTPotionFluidIngredient.kt | 62 +++---- .../lib/recipe/result/HTFluidResult.kt | 13 +- .../ragium/api/data/RagiumDataComponents.kt | 4 - .../kotlin/hiiragi283/ragium/common/Ragium.kt | 5 - .../hiiragi283/ragium/common/RagiumCommon.kt | 33 ++-- .../ragium/common/fluid/HTPotionFluidType.kt | 7 +- .../ragium/common/item/HTPotionBucketItem.kt | 5 +- .../ragium/common/item/RagiumItems.kt | 6 + .../item/alchemy/RagiumPotionFluidAccess.kt | 7 + .../common/recipe/RTLingeringBrewingRecipe.kt | 32 ---- .../recipe/RTPotionBottleDrainingRecipe.kt | 30 +++ .../recipe/RTPotionBottleFillingRecipe.kt | 33 ++++ .../common/recipe/RTSplashBrewingRecipe.kt | 31 ---- 42 files changed, 536 insertions(+), 662 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/lingering_bottle.json create mode 100644 src/generated/resources/assets/ragium/items/splash_bottle.json create mode 100644 src/generated/resources/assets/ragium/models/item/lingering_bottle.json create mode 100644 src/generated/resources/assets/ragium/models/item/splash_bottle.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json create mode 100644 src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json create mode 100644 src/generated/resources/data/ragium/recipe/lingering_bottle.json create mode 100644 src/generated/resources/data/ragium/recipe/splash_bottle.json delete mode 100644 src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index fd8600b65..6f091271f 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -77,7 +77,7 @@ data object RagiumClient : HTClientMod() { tintSource = FluidStackTintSource { stack: FluidStack -> "ff000000".hexToInt() or - HTPotionHelper.getPotion(stack).color + HTPotionHelper.getContents(stack).color } } register.register(RagiumFluids.OMINOUS_FLUX) { diff --git a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt index 12c97e824..7f4bcc3b0 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt @@ -15,7 +15,7 @@ data object RagiumClientEventHandler { fun onFluidTooltip(event: FluidTooltipEvent) { val stack: FluidStack = event.fluidStack if (stack.`is`(RagiumFluids.POTION.getOrThrow())) { - HTPotionHelper.getPotion(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) + HTPotionHelper.getContents(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) } } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 6d9985c3e..cac77a973 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -10,8 +10,10 @@ import hiiragi283.lib.integration.jei.category.HTItemToDoubleItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToItemAndFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTSingleRecipeCategory import hiiragi283.lib.item.HTPotionBasedItem -import hiiragi283.lib.item.alchemy.BottledPotionContents +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries @@ -42,6 +44,8 @@ import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStackTemplate +import net.minecraft.world.item.alchemy.Potion +import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.fluids.FluidStack @@ -50,11 +54,23 @@ import kotlin.streams.asSequence @JeiPlugin class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { - override fun registerItemSubtypes(registration: ISubtypeRegistration) { - // Potion-Based Item - HTPhysicalSideHelper + companion object { + @JvmStatic + private fun listItems(): Sequence> = HTPhysicalSideHelper .filteredLookup(BuiltInRegistries.ITEM) .listElements() + .asSequence() + + @JvmStatic + private fun listPotions(): Sequence> = HTPhysicalSideHelper + .filteredLookup(BuiltInRegistries.POTION) + .listElements() + .asSequence() + } + + override fun registerItemSubtypes(registration: ISubtypeRegistration) { + // Potion-Based Item + listItems() .map(Holder::value) .forEach { item: Item -> if (item is HTPotionBasedItem) { @@ -82,12 +98,9 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { override fun registerExtraIngredients(registration: IExtraIngredientRegistration) { registration.addExtraIngredients( NeoForgeTypes.FLUID_STACK, - HTPhysicalSideHelper - .filteredLookup(BuiltInRegistries.POTION) - .listElements() - .map(::BottledPotionContents) - .filter { !it.isWater } - .map(BottledPotionContents::toFluidStack) + listPotions() + .filter { !it.`is`(Potions.WATER) } + .map(HTPotionHelper::createFluid) .toList() ) registration.addExtraIngredients( @@ -164,12 +177,50 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { } private fun registerDynamicRecipes(registration: IRecipeRegistration) { + // Mechanical + registration.addRecipes( + RagiumJeiRecipeTypes.DRAINING, + listPotions() + .flatMap { potion: Holder.Reference -> + HTBottleType.entries.map { bottleType: HTBottleType -> + RagiumRecipeBuilders.draining { + +HTJeiRecipeHelper.fakeItem( + ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(potion)) + ) + itemResult { +bottleType.emptyItem } + fluidResult { from(HTPotionHelper.createFluid(potion, HTPotionHelper.BOTTLE_AMOUNT)) } + recipeId replace potion.getKeyOrThrow() + .identifier() + .withPrefix("potion_bottle/${bottleType.serializedName}/") + }.buildSynthetic() + } + }.toList() + ) + registration.addRecipes( + RagiumJeiRecipeTypes.FILLING, + listPotions() + .flatMap { potion: Holder.Reference -> + HTBottleType.entries.map { bottleType: HTBottleType -> + RagiumRecipeBuilders.filling { + itemIngredient { items { +bottleType.emptyItem } } + fluidIngredient { + +HTPotionFluidIngredient(potion) + amount = HTPotionHelper.BOTTLE_AMOUNT + } + result { + from(ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(potion))) + } + recipeId replace potion.getKeyOrThrow() + .identifier() + .withPrefix("potion_bottle/${bottleType.serializedName}/") + }.buildSynthetic() + } + }.toList() + ) // Chemical registration.addRecipes( RagiumJeiRecipeTypes.MIXING, - HTPhysicalSideHelper.filteredLookup(BuiltInRegistries.ITEM) - .listElements() - .asSequence() + listItems() .mapNotNull { input: Holder -> val result: FluidStack = HTOreSlurryDataHelper.createFluid(input.components()) ?: return@mapNotNull null diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index d3eddca80..569592be5 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -65,7 +65,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.MACHINE_CASING, "Machine Casing") // Fluid addFluid(RagiumFluids.HONEY, "Honey") - add(RagiumFluids.POTION.getFluidType().descriptionId, "Invalid Potion") + // add(RagiumFluids.POTION.getFluidType().descriptionId, "Invalid Potion") add(RagiumFluids.POTION.bucketHolder, $$"%1$s Bucket") addFluid(RagiumFluids.OMINOUS_FLUX, "Ominous Flux") addFluid(RagiumFluids.MOLTEN_GLASS, "Molten Glass") @@ -106,6 +106,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") add(RagiumItems.BEESWAX, "Beeswax") + add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") + add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") add(RagiumItems.WITHER_STAR, "Wither Star") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 51992d14a..e129360a3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -61,7 +61,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.MACHINE_CASING, "機械ケーシング") // Fluid addFluid(RagiumFluids.HONEY, "ハチミツ") - add(RagiumFluids.POTION.getFluidType().descriptionId, "無効なポーション") + // add(RagiumFluids.POTION.getFluidType().descriptionId, "無効なポーション") add(RagiumFluids.POTION.bucketHolder, $$"%1$s入りバケツ") addFluid(RagiumFluids.OMINOUS_FLUX, "不吉な流動体") addFluid(RagiumFluids.MOLTEN_GLASS, "溶融ガラス") @@ -102,6 +102,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") add(RagiumItems.BEESWAX, "密猟") + add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") + add(RagiumItems.LINGERING_BOTTLE, "残留瓶") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") add(RagiumItems.WITHER_STAR, "ウィザースター") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 42ceec821..d05b26c30 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -8,6 +8,7 @@ import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.HTSimpleBlockItemWithKey import hiiragi283.lib.resource.HTValueWithId import hiiragi283.lib.resource.blockId +import hiiragi283.lib.resource.vanillaId import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.common.block.HTMachineBlock @@ -137,12 +138,23 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP buildSet { addAll(RagiumItems.REGISTER.asSequence()) + remove(RagiumItems.SPLASH_BOTTLE) + remove(RagiumItems.LINGERING_BOTTLE) + remove(RagiumItems.MEMORY_DISC) removeAll(RagiumItems.MACHINE_PARTS.values) removeAll(handheld) }.forEach { generators.generateFlatItem(it) } + generators.generateFlatItem( + RagiumItems.SPLASH_BOTTLE, + layer = vanillaId(HTConstants.ITEM, "splash_potion") + ) + generators.generateFlatItem( + RagiumItems.LINGERING_BOTTLE, + layer = vanillaId(HTConstants.ITEM, "lingering_potion") + ) generators.generateFlatItem(RagiumItems.MEMORY_DISC, template = ModelTemplates.MUSIC_DISC) for ((machineType: HTMachineType, parts: HTSimpleDeferredItem) in RagiumItems.MACHINE_PARTS) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 244981e5b..7e6595096 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -192,6 +192,24 @@ class RagiumVanillaRecipeProvider(registries: HolderLookup.Provider, output: Rec ).unlockedBy(getHasName(HTCommonTags.Items.PLASTICS), has(HTCommonTags.Items.PLASTICS)) .save(output) } + // Splash Bottle + shapeless(RecipeCategory.BREWING, RagiumItems.SPLASH_BOTTLE, 4) + .requires(Tags.Items.GUNPOWDERS) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .unlockedBy(getHasName(Tags.Items.GUNPOWDERS), has(Tags.Items.GUNPOWDERS)) + .save(output) + // Lingering Bottle + shapeless(RecipeCategory.BREWING, RagiumItems.LINGERING_BOTTLE, 4) + .requires(Items.DRAGON_BREATH) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .requires(Items.GLASS_BOTTLE) + .unlockedBy(getHasName(Items.DRAGON_BREATH), has(Items.DRAGON_BREATH)) + .save(output) // XX Tools registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) diff --git a/src/generated/resources/assets/ragium/items/lingering_bottle.json b/src/generated/resources/assets/ragium/items/lingering_bottle.json new file mode 100644 index 000000000..9c0773e11 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/lingering_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/lingering_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/splash_bottle.json b/src/generated/resources/assets/ragium/items/splash_bottle.json new file mode 100644 index 000000000..5545ee248 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/splash_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/splash_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 68294555e..3115df6f9 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -80,7 +80,6 @@ "block.ragium.oxygen": "Oxygen", "block.ragium.pink_dye": "Pink Dye", "block.ragium.planter": "Planter", - "block.ragium.potion": "Invalid Potion", "block.ragium.purple_dye": "Purple Dye", "block.ragium.pyrolyzer": "Pyrolyzer", "block.ragium.red_dye": "Red Dye", @@ -197,6 +196,7 @@ "item.ragium.light_blue_dye_bucket": "Light Blue Dye Bucket", "item.ragium.light_gray_dye_bucket": "Light Gray Dye Bucket", "item.ragium.lime_dye_bucket": "Lime Dye Bucket", + "item.ragium.lingering_bottle": "Lingering Bottle", "item.ragium.liquid_explosive_bucket": "Liquid Explosive Bucket", "item.ragium.magenta_dye_bucket": "Magenta Dye Bucket", "item.ragium.mechanical_machine_parts": "Machine Parts (Mechanical)", @@ -236,6 +236,7 @@ "item.ragium.sooty_iron_pickaxe": "Sooty Iron Pickaxe", "item.ragium.sooty_iron_shovel": "Sooty Iron Shovel", "item.ragium.sooty_iron_sword": "Sooty Iron Sword", + "item.ragium.splash_bottle": "Splash Bottle", "item.ragium.sulfur_dioxide_bucket": "Sulfur Dioxide Bucket", "item.ragium.sulfur_dust": "Sulfur Dust", "item.ragium.sulfur_trioxide_bucket": "Sulfur Trioxide Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 8d0cd9c9d..5a3d699f3 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -80,7 +80,6 @@ "block.ragium.oxygen": "酸素", "block.ragium.pink_dye": "桃色の染料", "block.ragium.planter": "栽培機", - "block.ragium.potion": "無効なポーション", "block.ragium.purple_dye": "紫色の染料", "block.ragium.pyrolyzer": "熱分解炉", "block.ragium.red_dye": "赤色の染料", @@ -197,6 +196,7 @@ "item.ragium.light_blue_dye_bucket": "空色の染料入りバケツ", "item.ragium.light_gray_dye_bucket": "薄灰色の染料入りバケツ", "item.ragium.lime_dye_bucket": "黄緑色の染料入りバケツ", + "item.ragium.lingering_bottle": "残留瓶", "item.ragium.liquid_explosive_bucket": "液体爆薬入りバケツ", "item.ragium.magenta_dye_bucket": "赤紫色の染料入りバケツ", "item.ragium.mechanical_machine_parts": "機械部品 (機械加工)", @@ -236,6 +236,7 @@ "item.ragium.sooty_iron_pickaxe": "煤鉄のツルハシ", "item.ragium.sooty_iron_shovel": "煤鉄のショベル", "item.ragium.sooty_iron_sword": "煤鉄の剣", + "item.ragium.splash_bottle": "スプラッシュ瓶", "item.ragium.sulfur_dioxide_bucket": "二酸化硫黄入りバケツ", "item.ragium.sulfur_dust": "硫黄の粉", "item.ragium.sulfur_trioxide_bucket": "三酸化硫黄入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/lingering_bottle.json b/src/generated/resources/assets/ragium/models/item/lingering_bottle.json new file mode 100644 index 000000000..5a23bd136 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/lingering_bottle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/lingering_potion" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/splash_bottle.json b/src/generated/resources/assets/ragium/models/item/splash_bottle.json new file mode 100644 index 000000000..47b6698e0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/splash_bottle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/splash_potion" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json b/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json new file mode 100644 index 000000000..af175283d --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/brewing/lingering_bottle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_dragon_breath": { + "conditions": { + "items": [ + { + "items": "minecraft:dragon_breath" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:lingering_bottle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dragon_breath" + ] + ], + "rewards": { + "recipes": [ + "ragium:lingering_bottle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json b/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json new file mode 100644 index 000000000..43462c9f2 --- /dev/null +++ b/src/generated/resources/data/ragium/advancement/recipes/brewing/splash_bottle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_gunpowders": { + "conditions": { + "items": [ + { + "items": "#c:gunpowders" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:splash_bottle" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_gunpowders" + ] + ], + "rewards": { + "recipes": [ + "ragium:splash_bottle" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json b/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json index 8fa1441c3..590944bb6 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/darkness.json @@ -14,16 +14,14 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_effects": [ - { - "duration": 900, - "id": "minecraft:darkness", - "show_icon": true - } - ], - "custom_name": "darkness" - } + "custom_effects": [ + { + "duration": 900, + "id": "minecraft:darkness", + "show_icon": true + } + ], + "custom_name": "darkness" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json b/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json index 5dcc8a96c..881177075 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/enchanted_golden_apple.json @@ -14,34 +14,32 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_color": 16750848, - "custom_effects": [ - { - "amplifier": 1, - "duration": 400, - "id": "minecraft:regeneration", - "show_icon": true - }, - { - "duration": 6000, - "id": "minecraft:resistance", - "show_icon": true - }, - { - "duration": 6000, - "id": "minecraft:fire_resistance", - "show_icon": true - }, - { - "amplifier": 3, - "duration": 2400, - "id": "minecraft:absorption", - "show_icon": true - } - ], - "custom_name": "enchanted_golden_apple" - } + "custom_color": 16750848, + "custom_effects": [ + { + "amplifier": 1, + "duration": 400, + "id": "minecraft:regeneration", + "show_icon": true + }, + { + "duration": 6000, + "id": "minecraft:resistance", + "show_icon": true + }, + { + "duration": 6000, + "id": "minecraft:fire_resistance", + "show_icon": true + }, + { + "amplifier": 3, + "duration": 2400, + "id": "minecraft:absorption", + "show_icon": true + } + ], + "custom_name": "enchanted_golden_apple" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json b/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json index dce1b8ed3..2e1f6ea7b 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/golden_apple.json @@ -14,23 +14,21 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_color": 16750848, - "custom_effects": [ - { - "amplifier": 1, - "duration": 100, - "id": "minecraft:regeneration", - "show_icon": true - }, - { - "duration": 2400, - "id": "minecraft:absorption", - "show_icon": true - } - ], - "custom_name": "golden_apple" - } + "custom_color": 16750848, + "custom_effects": [ + { + "amplifier": 1, + "duration": 100, + "id": "minecraft:regeneration", + "show_icon": true + }, + { + "duration": 2400, + "id": "minecraft:absorption", + "show_icon": true + } + ], + "custom_name": "golden_apple" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json b/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json index 9d48eb205..b03938b26 100644 --- a/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json +++ b/src/generated/resources/data/ragium/recipe/brewing/potion/hunger.json @@ -14,16 +14,14 @@ "result": { "type": "ragium:potion", "amount": 1000, - "contents": { - "custom_effects": [ - { - "duration": 900, - "id": "minecraft:hunger", - "show_icon": true - } - ], - "custom_name": "hunger" - } + "custom_effects": [ + { + "duration": 900, + "id": "minecraft:hunger", + "show_icon": true + } + ], + "custom_name": "hunger" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/lingering_bottle.json b/src/generated/resources/data/ragium/recipe/lingering_bottle.json new file mode 100644 index 000000000..dbe591b9b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/lingering_bottle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "minecraft:dragon_breath", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle" + ], + "result": { + "count": 4, + "id": "ragium:lingering_bottle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/splash_bottle.json b/src/generated/resources/data/ragium/recipe/splash_bottle.json new file mode 100644 index 000000000..65a2cd7b0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/splash_bottle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:gunpowders", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle" + ], + "result": { + "count": 4, + "id": "ragium:splash_bottle" + } +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt index 9e21ac931..54c07c964 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt @@ -2,7 +2,6 @@ package hiiragi283.lib.data.recipe -import hiiragi283.lib.item.alchemy.BottledPotionContents import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.registry.HTDeferredHolder import hiiragi283.lib.registry.HTFluidContent @@ -100,14 +99,10 @@ class HTFluidResultBuilder @PublishedApi internal constructor() { // Potion @JvmName("unaryPlusPotion") operator fun Holder.unaryPlus() { - +BottledPotionContents(this) + +PotionContents(this) } operator fun PotionContents.unaryPlus() { - +BottledPotionContents(this) - } - - operator fun BottledPotionContents.unaryPlus() { +HTFluidResult.PotionEntry(this) } diff --git a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt index dfd6a3846..5cfa7f0ff 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt @@ -1,18 +1,16 @@ package hiiragi283.lib.item -import hiiragi283.lib.item.alchemy.BottledPotionContents -import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.ragium.api.data.RagiumDataComponents import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries +import net.minecraft.resources.Identifier import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.alchemy.PotionContents -import net.minecraft.world.item.alchemy.Potions +import kotlin.jvm.optionals.getOrElse /** * ポーションに基づいた[Item]の拡張クラスです。 @@ -25,13 +23,14 @@ open class HTPotionBasedItem(properties: Properties) : override fun getDefaultInstance(): ItemStack { val stack: ItemStack = super.getDefaultInstance() - stack[DataComponents.POTION_CONTENTS] = PotionContents(Potions.WATER) - stack[RagiumDataComponents.BOTTLE_TYPE] = HTBottleType.DEFAULT + stack[DataComponents.POTION_CONTENTS] = PotionContents.EMPTY return stack } override fun getCreatorModId(registries: HolderLookup.Provider, itemStack: ItemStack): String? = - HTPotionHelper.getPotionModId(itemStack) ?: super.getCreatorModId(registries, itemStack) + HTPotionHelper.getPotionId(itemStack) + .map(Identifier::getNamespace) + .getOrElse { super.getCreatorModId(registries, itemStack) } // HTSubCreativeTabContents // @@ -44,9 +43,7 @@ open class HTPotionBasedItem(properties: Properties) : .lookupOrThrow(Registries.POTION) .filterFeatures(parameters.enabledFeatures()) .listElements() - .map(::BottledPotionContents) - .map(HTPotionHelper::createItemPatch) - .map { ItemStack(baseItem, 1, it) } + .map { ItemStack(baseItem, 1, HTPotionHelper.createPotionPatch(it)) } .forEach(output::accept) } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt deleted file mode 100644 index 38e819a10..000000000 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/BottledPotionContents.kt +++ /dev/null @@ -1,147 +0,0 @@ -package hiiragi283.lib.item.alchemy - -import com.mojang.serialization.Codec -import com.mojang.serialization.MapCodec -import hiiragi283.lib.fluid.createOrEmpty -import hiiragi283.lib.item.createOrEmpty -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.Text -import net.minecraft.core.Holder -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.effect.MobEffectInstance -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.Items -import net.minecraft.world.item.alchemy.Potion -import net.minecraft.world.item.alchemy.PotionContents -import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.level.material.Fluids -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidStackTemplate -import net.neoforged.neoforge.fluids.FluidType -import kotlin.jvm.optionals.getOrNull - -/** - * ポーションの中身と瓶の形状を束ねたクラスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@JvmRecord -data class BottledPotionContents @JvmOverloads constructor( - val contents: PotionContents, - val bottleType: HTBottleType = HTBottleType.DEFAULT -) : HTHasText { - companion object { - @JvmField - val MAP_CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - PotionContents.CODEC.fieldOf("contents").forGetter(BottledPotionContents::contents), - HTBottleType.FIELD_CODEC.forGetter(BottledPotionContents::bottleType) - ).apply(instance, ::BottledPotionContents) - } - - @JvmField - val CODEC: Codec = Codec.withAlternative( - MAP_CODEC.codec(), - HTCodecs.holder(Registries.POTION), - ::BottledPotionContents - ) - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - PotionContents.STREAM_CODEC, - BottledPotionContents::contents, - HTBottleType.STREAM_CODEC, - BottledPotionContents::bottleType, - ::BottledPotionContents - ) - } - - @JvmOverloads - constructor( - potion: Holder, - bottleType: HTBottleType = HTBottleType.DEFAULT - ) : this(PotionContents(potion), bottleType) - - /** - * ポーションの値 - */ - val potion: Holder? get() = contents.potion().getOrNull() - - /** - * カスタム色の値 - */ - val customColor: Int? get() = contents.customColor().getOrNull() - - /** - * カスタムエフェクトの一覧 - */ - val customEffects: List get() = contents.customEffects() - - /** - * ポーションも含めたすべてのエフェクトの一覧 - */ - val allEffects: Iterable get() = contents.allEffects - - /** - * 保持しているエフェクトが空かどうか - */ - val isEmpty: Boolean get() = HTPotionHelper.isEmpty(contents) - - /** - * 保持しているエフェクトが水に一致するかどうか - */ - val isWater: Boolean get() = potion == Potions.WATER && bottleType == HTBottleType.DEFAULT - - /** - * [FluidStackTemplate]に変換します。 - * @param amount 液体量 - * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション - */ - fun toFluidTemplate(amount: Int = FluidType.BUCKET_VOLUME): FluidStackTemplate? = when { - this.isEmpty -> null - - this.isWater -> FluidStackTemplate(Fluids.WATER, amount) - - else -> HTPotionFluidAccess.INSTANCE.fluidContent.toTemplate( - amount, - HTPotionHelper.createFluidPatch( - HTPotionFluidAccess.INSTANCE.fluidContent.getOrThrow(), - this@BottledPotionContents - ) - ) - } - - /** - * [FluidStack]に変換します。 - * @param amount 液体量 - * @return [isWater]が`true`の場合は水,それ以外の場合は液体ポーション - */ - fun toFluidStack(amount: Int = FluidType.BUCKET_VOLUME): FluidStack = toFluidTemplate(amount).createOrEmpty() - - /** - * [ItemStackTemplate]に変換します。 - * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ - */ - fun toBucketTemplate(): ItemStackTemplate? = when { - this.isEmpty -> null - - this.isWater -> ItemStackTemplate(Items.WATER_BUCKET) - - else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate( - patch = HTPotionHelper.createItemPatch(this@BottledPotionContents) - ) - } - - /** - * [ItemStack]に変換します。 - * @return [isWater]が`true`の場合は水入りバケツ,それ以外の場合は液体ポーション入りバケツ - */ - fun toBucketStack(): ItemStack = toBucketTemplate().createOrEmpty() - - override fun getText(): Text = contents.getName("${bottleType.asItem().descriptionId}.effect.") -} diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt index 793f91547..92809feb8 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt @@ -3,30 +3,21 @@ package hiiragi283.lib.item.alchemy import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.item.HTItemInstanceLike -import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import io.netty.buffer.ByteBuf -import net.minecraft.core.TypedInstance -import net.minecraft.core.component.DataComponentPatch import net.minecraft.network.codec.StreamCodec import net.minecraft.util.StringRepresentable import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.ItemStackTemplate import net.minecraft.world.item.Items -import net.minecraft.world.level.ItemLike /** * ポーション瓶の種類を管理するクラスです。 * @author Hiiragi Tsubasa * @since 26.1.0 */ -enum class HTBottleType : - StringRepresentable, - ItemLike, - HTItemInstanceLike { +enum class HTBottleType : StringRepresentable { DEFAULT, SPLASH, LINGERING @@ -41,22 +32,20 @@ enum class HTBottleType : @JvmField val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() - - @JvmStatic - fun getBottleType(instance: TypedInstance): HTBottleType? = - entries.firstOrNull { instance.`is`(it.asItem()) } - } - - override fun asItem(): Item = when (this) { - DEFAULT -> Items.POTION - SPLASH -> Items.SPLASH_POTION - LINGERING -> Items.LINGERING_POTION } - override fun toTemplate(count: Int, patch: DataComponentPatch): ItemStackTemplate = - ItemStackTemplate(asItem(), count, patch) - - override fun toStack(count: Int, patch: DataComponentPatch): ItemStack = ItemStack(this, count, patch) + val emptyItem: HTSimpleDeferredItem + get() = when (this) { + DEFAULT -> HTPotionFluidAccess.INSTANCE.glassBottle + SPLASH -> HTPotionFluidAccess.INSTANCE.splashBottle + LINGERING -> HTPotionFluidAccess.INSTANCE.lingeringBottle + } + val filledItem: Item + get() = when (this) { + DEFAULT -> Items.POTION + SPLASH -> Items.SPLASH_POTION + LINGERING -> Items.LINGERING_POTION + } override fun getSerializedName(): String = name.lowercase() } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt index cc5fa0f82..2b6ce732a 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidAccess.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.item.alchemy import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.ragium.api.RagiumAPI /** @@ -17,4 +18,19 @@ interface HTPotionFluidAccess { * Ragiumで登録される液体ポーションのインスタンス */ val fluidContent: HTFluidContent + + /** + * @since 26.1.6 + */ + val glassBottle: HTSimpleDeferredItem + + /** + * @since 26.1.6 + */ + val splashBottle: HTSimpleDeferredItem + + /** + * @since 26.1.6 + */ + val lingeringBottle: HTSimpleDeferredItem } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt deleted file mode 100644 index 3630ca1e3..000000000 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionFluidManager.kt +++ /dev/null @@ -1,64 +0,0 @@ -package hiiragi283.lib.item.alchemy - -import hiiragi283.ragium.api.data.RagiumDataComponents -import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap -import net.minecraft.core.component.DataComponentGetter -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.world.level.material.Fluid - -/** - * 液体ポーションを管理するクラスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -data object HTPotionFluidManager { - /** - * 登録されている[液体][Fluid]の一覧 - */ - @JvmStatic - val handlers: Map field: MutableMap = Object2ObjectLinkedOpenHashMap() - - /** - * 新しい液体ポーションを登録します。 - * @throws IllegalStateException 指定した[fluid]が既に登録されいた場合 - */ - @JvmStatic - fun register(fluid: Fluid, handler: Handler) { - check(handlers.put(fluid, handler) == null) { "Duplicated potion fluid registration: $fluid" } - } - - /** - * 指定した液体からハンドラを取得します。 - * @return 対応するハンドラがない場合は`null` - */ - @JvmStatic - fun getHandler(fluid: Fluid): Handler? = handlers[fluid] - - @JvmStatic - fun getHandlerOrDefault(fluid: Fluid): Handler = getHandler(fluid) ?: Handler.DEFAULT - - // Handler // - - /** - * ポーション瓶の種類を保持するインターフェースです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - interface Handler { - companion object { - @JvmField - val DEFAULT: Handler = object : Handler { - override fun get(getter: DataComponentGetter): HTBottleType? = - getter.get(RagiumDataComponents.BOTTLE_TYPE) - - override fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) { - builder[RagiumDataComponents.BOTTLE_TYPE] = bottleType - } - } - } - - operator fun get(getter: DataComponentGetter): HTBottleType? - - operator fun set(builder: DataComponentPatch.Builder, bottleType: HTBottleType) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt index 8cdffe002..a2c94ff3d 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt @@ -1,151 +1,132 @@ package hiiragi283.lib.item.alchemy import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.item.ItemInstanceBuilder +import hiiragi283.lib.text.Text import net.minecraft.core.Holder -import net.minecraft.core.TypedInstance import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentPatch import net.minecraft.core.component.DataComponents import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStackTemplate +import net.minecraft.world.item.Items import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.level.material.Fluid -import net.neoforged.neoforge.common.Tags -import kotlin.jvm.optionals.getOrNull +import net.minecraft.world.level.material.Fluids +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.fluids.FluidType +import java.util.Optional /** * @author Hiiragi Tsubasa - * @since 26.1.0 + * @since 26.1.6 */ data object HTPotionHelper { - /** - * 指定した[contents]が空かどうか判定します。 - * @return [contents]が[PotionContents.EMPTY]と同じ場合,またはポーションもカスタムエフェクトもない場合は`true` - * @since 26.1.6 - */ - @JvmStatic - fun isEmpty(contents: PotionContents): Boolean = - contents == PotionContents.EMPTY || (contents.potion().isEmpty && contents.customEffects.isEmpty()) + const val BOTTLE_AMOUNT: Int = FluidType.BUCKET_VOLUME / 4 - // DataComponentGetter // + // Data Component // /** * 指定した[getter]から[PotionContents]を取得します。 * @return 値を保持していない場合は[PotionContents.EMPTY] */ @JvmStatic - fun getPotion(getter: DataComponentGetter): PotionContents = + fun getContents(getter: DataComponentGetter): PotionContents = getter.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY) + @JvmStatic + fun isEmpty(getter: DataComponentGetter): Boolean = getContents(getter).let(::isEmpty) + /** - * 指定した[getter]からポーションのMod IDを取得します。 + * 指定した[contents]が空かどうか判定します。 + * @return [contents]が[PotionContents.EMPTY]と同じ場合,またはポーションもカスタムエフェクトもない場合は`true` */ @JvmStatic - fun getPotionModId(getter: DataComponentGetter): String? = getPotion(getter) + fun isEmpty(contents: PotionContents): Boolean = + contents == PotionContents.EMPTY || (contents.potion().isEmpty && contents.customEffects.isEmpty()) + + @JvmStatic + fun hasAnyEffect(getter: DataComponentGetter): Boolean = !getContents(getter).let(::isEmpty) + + // Patch + @JvmStatic + fun createPotionPatch(getter: DataComponentGetter): DataComponentPatch = + getContents(getter).let(::createPotionPatch) + + @JvmStatic + fun createPotionPatch(potion: Holder): DataComponentPatch = createPotionPatch(PotionContents(potion)) + + @JvmStatic + fun createPotionPatch(contents: PotionContents): DataComponentPatch = + buildDataPatch { set(DataComponents.POTION_CONTENTS, contents) } + + // Potion Id + + @JvmStatic + fun getPotionId(getter: DataComponentGetter): Optional = getContents(getter).let(::getPotionId) + + @JvmStatic + fun getPotionId(contents: PotionContents): Optional = contents .potion() .flatMap(Holder::unwrapKey) .map(ResourceKey::identifier) - .map(Identifier::getNamespace) - .getOrNull() + + // Name + + @JvmStatic + fun getPotionName(getter: DataComponentGetter, bottleType: HTBottleType): Text = + getPotionName(getContents(getter), bottleType) + + @JvmStatic + fun getPotionName(contents: PotionContents, bottleType: HTBottleType): Text = + contents.getName("${bottleType.filledItem.descriptionId}.effect.") // ItemStack // + // Filled Bottle + @JvmStatic - fun createPotion(potion: Holder, bottleType: HTBottleType = HTBottleType.DEFAULT): ItemStackTemplate = - ItemInstanceBuilder.buildTemplate { - +bottleType.asItem() - components { set(DataComponents.POTION_CONTENTS, PotionContents(potion)) } - } + fun createFilled(getter: DataComponentGetter, bottleType: HTBottleType): ItemStackTemplate = + createFilled(getContents(getter), bottleType) - /** - * 指定した[contents]からポーションの[ItemStack]を作成します。 - */ @JvmStatic - fun createPotion(contents: BottledPotionContents): ItemStackTemplate = ItemInstanceBuilder.buildTemplate { - +contents.bottleType.asItem() - components { set(DataComponents.POTION_CONTENTS, contents.contents) } - } + fun createFilled(potion: Holder, bottleType: HTBottleType): ItemStackTemplate = + createFilled(PotionContents(potion), bottleType) - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ - @JvmName("getContentsFromItem") @JvmStatic - fun getContents(instance: T): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter { - val bottleType: HTBottleType = HTPotionFluidManager.Handler.DEFAULT[instance] ?: return null - val contents: PotionContents = getPotion(instance) - return BottledPotionContents(contents, bottleType) - } + fun createFilled(contents: PotionContents, bottleType: HTBottleType): ItemStackTemplate = + ItemStackTemplate(bottleType.filledItem, 1, createPotionPatch(contents)) + + // Bucket - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ @JvmStatic - fun getContentsFromBottle( - instance: T - ): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter { - val bottleType: HTBottleType = HTBottleType.getBottleType(instance) ?: return null - val contents: PotionContents = getPotion(instance) - return BottledPotionContents(contents, bottleType) - } + fun createBuket(getter: DataComponentGetter): ItemStackTemplate = getContents(getter).let(::createBuket) + @Suppress("DEPRECATION") @JvmStatic - fun fillItemPatch(contents: BottledPotionContents, builder: DataComponentPatch.Builder) { - val (contents1: PotionContents, bottleType: HTBottleType) = contents - builder.set(DataComponents.POTION_CONTENTS, contents1) - HTPotionFluidManager.Handler.DEFAULT[builder] = bottleType - } + fun createBuket(potion: Holder): ItemStackTemplate = createBuket(PotionContents(potion)) @JvmStatic - fun createItemPatch(contents: BottledPotionContents): DataComponentPatch = - buildDataPatch { fillItemPatch(contents, this) } + fun createBuket(contents: PotionContents): ItemStackTemplate = when { + contents.`is`(Potions.WATER) -> ItemStackTemplate(Items.WATER_BUCKET) + else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate(patch = createPotionPatch(contents))!! + } // FluidStack // - /** - * 指定した[instance]から[BottledPotionContents]を取得します。 - * @return [BottledPotionContents]を取得できない場合は`null` - */ - @JvmName("getContentsFromFluid") - @JvmStatic - fun getContents(instance: T): BottledPotionContents? where T : TypedInstance, T : DataComponentGetter = - when { - instance.`is`(Tags.Fluids.WATER) -> BottledPotionContents(Potions.WATER) - - else -> HTPotionFluidManager.getHandlerOrDefault( - instance.typeHolder().value() - )[instance]?.let { bottleType: HTBottleType -> - val contents: PotionContents = getPotion(instance) - BottledPotionContents(contents, bottleType) - } - } - - @JvmStatic - fun fillFluidPatch( - instance: T, - contents: BottledPotionContents, - builder: DataComponentPatch.Builder - ) where T : TypedInstance, T : DataComponentGetter { - fillFluidPatch(instance.typeHolder().value(), contents, builder) - } + @JvmStatic + fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = + createFluid(getContents(getter), amount) + @Suppress("DEPRECATION") @JvmStatic - fun fillFluidPatch(fluid: Fluid, contents: BottledPotionContents, builder: DataComponentPatch.Builder) { - val handler: HTPotionFluidManager.Handler = HTPotionFluidManager.getHandler(fluid) ?: return - val (contents1: PotionContents, bottleType: HTBottleType) = contents - builder.set(DataComponents.POTION_CONTENTS, contents1) - handler[builder] = bottleType - } + fun createFluid(potion: Holder, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = + createFluid(PotionContents(potion), amount) @JvmStatic - fun createFluidPatch(fluid: Fluid, contents: BottledPotionContents): DataComponentPatch = - buildDataPatch { fillFluidPatch(fluid, contents, this) } + fun createFluid(contents: PotionContents, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = when { + contents.`is`(Potions.WATER) -> FluidStack(Fluids.WATER, amount) + else -> HTPotionFluidAccess.INSTANCE.fluidContent.toStack(amount, createPotionPatch(contents)) + } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt b/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt deleted file mode 100644 index 84b465ca3..000000000 --- a/src/lib/kotlin/hiiragi283/lib/recipe/display/HTPotionSlotDisplay.kt +++ /dev/null @@ -1,102 +0,0 @@ -package hiiragi283.lib.recipe.display - -import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.HTPhysicalSideHelper -import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.fluid.FluidStack -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionFluidManager -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import net.minecraft.core.Holder -import net.minecraft.core.HolderSet -import net.minecraft.core.component.DataComponents -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec -import net.minecraft.util.context.ContextMap -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.alchemy.Potion -import net.minecraft.world.item.alchemy.PotionContents -import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.item.crafting.display.DisplayContentsFactory -import net.minecraft.world.item.crafting.display.SlotDisplay -import net.minecraft.world.level.material.Fluid -import net.minecraft.world.level.material.Fluids -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.crafting.display.ForFluidStacks -import java.util.function.Consumer -import java.util.stream.Stream - -/** - * [Potion]と[HTBottleType]に基づいた[SlotDisplay]の実装クラスです。 - * @param potions 対象となるポーションの一覧 - * @param bottleType 対象となるポーション瓶の種類 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@JvmRecord -data class HTPotionSlotDisplay(val potions: HolderSet, val bottleType: HTBottleType) : SlotDisplay { - companion object { - @JvmField - val CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - HTCodecs.holderSet( - Registries.POTION - ).fieldOf(HTConstants.POTIONS).forGetter(HTPotionSlotDisplay::potions), - HTBottleType.FIELD_CODEC.forGetter(HTPotionSlotDisplay::bottleType) - ).apply(instance, ::HTPotionSlotDisplay) - } - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.holderSet(Registries.POTION), - HTPotionSlotDisplay::potions, - HTBottleType.STREAM_CODEC, - HTPotionSlotDisplay::bottleType, - ::HTPotionSlotDisplay - ) - - @JvmField - val TYPE: SlotDisplay.Type = SlotDisplay.Type(CODEC, STREAM_CODEC) - } - - override fun resolve(context: ContextMap, builder: DisplayContentsFactory): Stream = - when (builder) { - is DisplayContentsFactory.ForStacks -> - potions.stream() - .map { HTPotionHelper.createPotion(it, bottleType) } - .map(ItemStackTemplate::create) - .map(builder::forStack) - - is ForFluidStacks -> - HTPotionFluidManager.handlers - .entries - .stream() - .mapMulti { (fluid: Fluid, handler: HTPotionFluidManager.Handler), consumer: Consumer -> - potions - .filter { it.value().isEnabled(HTPhysicalSideHelper.getFeatureFlags()) } - .map { potion: Holder -> - when (potion) { - Potions.WATER -> FluidStack(Fluids.WATER) - - else -> FluidStack( - fluid, - patch = buildDataPatch { - set(DataComponents.POTION_CONTENTS, PotionContents(potion)) - handler[this] = bottleType - } - ) - } - } - .forEach(consumer) - }.map(builder::forStack) - - else -> Stream.empty() - } - - override fun type(): SlotDisplay.Type = TYPE -} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt index 5f5dec26c..1a313b254 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt @@ -2,72 +2,70 @@ package hiiragi283.lib.recipe.ingredient import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.item.alchemy.BottledPotionContents -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionFluidManager +import hiiragi283.lib.HTPhysicalSideHelper +import hiiragi283.lib.fluid.FluidStack +import hiiragi283.lib.item.alchemy.HTPotionFluidAccess import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.display.HTPotionSlotDisplay import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.util.fold import net.minecraft.core.Holder import net.minecraft.core.HolderSet import net.minecraft.core.registries.Registries import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.alchemy.Potion +import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay import net.minecraft.world.level.material.Fluid +import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.crafting.FluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredientType +import net.neoforged.neoforge.fluids.crafting.display.FluidStackSlotDisplay import java.util.stream.Stream /** - * [HTPotionFluidManager]に基づいて液体ポーションを扱う[FluidIngredient]の実装クラスです。 + * 液体ポーションを扱う[FluidIngredient]の実装クラスです。 * @param potions 対象となるポーションの一覧 - * @param bottleType 対象となるポーション瓶の種類 * @author Hiiragi Tsubasa * @since 26.1.0 */ -data class HTPotionFluidIngredient(val potions: HolderSet, val bottleType: HTBottleType) : FluidIngredient() { +data class HTPotionFluidIngredient(val potions: HolderSet) : FluidIngredient() { companion object { @JvmField - val CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance - .group( - HTCodecs.holderSet( - Registries.POTION - ).fieldOf(HTConstants.POTIONS).forGetter(HTPotionFluidIngredient::potions), - HTBottleType.FIELD_CODEC.forGetter(HTPotionFluidIngredient::bottleType) - ).apply(instance, ::HTPotionFluidIngredient) - } + val CODEC: MapCodec = HTCodecs.holderSet(Registries.POTION) + .fieldOf(HTConstants.POTIONS) + .xmap(::HTPotionFluidIngredient, HTPotionFluidIngredient::potions) @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.holderSet(Registries.POTION), - HTPotionFluidIngredient::potions, - HTBottleType.STREAM_CODEC, - HTPotionFluidIngredient::bottleType, - ::HTPotionFluidIngredient - ) + val STREAM_CODEC: StreamCodec = + HTStreamCodecs.holderSet(Registries.POTION).map(::HTPotionFluidIngredient, HTPotionFluidIngredient::potions) @JvmField val TYPE: FluidIngredientType = FluidIngredientType(CODEC, STREAM_CODEC) } - constructor(potion: Holder) : this(HolderSet.direct(potion), HTBottleType.DEFAULT) + constructor(potion: Holder) : this(HolderSet.direct(potion)) - override fun test(fluidStack: FluidStack): Boolean { - val contents: BottledPotionContents = HTPotionHelper.getContents(fluidStack) ?: return false - return contents.bottleType == bottleType && contents.potion?.let(potions::contains) ?: false - } + override fun test(fluidStack: FluidStack): Boolean = + HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) @Suppress("DEPRECATION") - override fun generateFluids(): Stream> = HTPotionFluidManager.handlers.keys.stream().map { - it.builtInRegistryHolder() - } + override fun generateFluids(): Stream> = + Stream.of(HTPotionFluidAccess.INSTANCE.fluidContent.sourceHolder) - override fun display(): SlotDisplay = HTPotionSlotDisplay(potions, bottleType) + override fun display(): SlotDisplay = potions + .stream() + .filter { it.value().isEnabled(HTPhysicalSideHelper.getFeatureFlags()) } + .map { potion: Holder -> + when (potion) { + Potions.WATER -> FluidStack(Fluids.WATER) + else -> HTPotionHelper.createFluid(potion) + } + }.map(::FluidStackSlotDisplay) + .toList() + .let(SlotDisplay::Composite) override fun isSimple(): Boolean = false diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt index bfc601559..9a45b499b 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt @@ -4,7 +4,7 @@ import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants import hiiragi283.lib.fluid.HTFlowingFluidHelper -import hiiragi283.lib.item.alchemy.BottledPotionContents +import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.util.DFUEither @@ -17,6 +17,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.ByteBufCodecs import net.minecraft.network.codec.StreamCodec import net.minecraft.resources.Identifier +import net.minecraft.world.item.alchemy.PotionContents import net.minecraft.world.level.material.Fluid import net.neoforged.neoforge.common.util.NeoForgeExtraCodecs import net.neoforged.neoforge.fluids.FluidStack @@ -146,15 +147,15 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = - BottledPotionContents.MAP_CODEC.xmap(::PotionEntry, PotionEntry::contents) + MapCodec.assumeMapUnsafe(PotionContents.CODEC).xmap(::PotionEntry, PotionEntry::contents) @JvmField val STREAM_CODEC: StreamCodec = - BottledPotionContents.STREAM_CODEC.map(::PotionEntry, PotionEntry::contents) + PotionContents.STREAM_CODEC.map(::PotionEntry, PotionEntry::contents) @JvmField val TYPE: HTFluidResultType = HTFluidResultType(CODEC, STREAM_CODEC) @@ -162,10 +163,10 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = TYPE - override fun create(amount: Int): FluidStack = contents.toFluidStack(amount) + override fun create(amount: Int): FluidStack = HTPotionHelper.createFluid(contents, amount) override fun getId(): Identifier = - contents.potion?.getKeyOrThrow()?.identifier() ?: RagiumAPI.id(HTConstants.POTION) + HTPotionHelper.getPotionId(contents).orElseGet { RagiumAPI.id(HTConstants.POTION) } } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index b7ba578d8..248490035 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.data import hiiragi283.lib.data.DataComponentType -import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.ragium.api.RagiumRegistries @@ -19,9 +18,6 @@ import net.neoforged.neoforge.fluids.SimpleFluidContent */ data object RagiumDataComponents { // Item Stack - @JvmField - val BOTTLE_TYPE: DataComponentType = DataComponentType(HTBottleType.CODEC, HTBottleType.STREAM_CODEC) - @JvmField val ENERGY: DataComponentType = DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 91a5d8000..1b19ca227 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -11,7 +11,6 @@ import hiiragi283.lib.item.HTCreativeModeTabHelper import hiiragi283.lib.mod.HTCommonMod import hiiragi283.lib.network.HTPayloadHandlers import hiiragi283.lib.recipe.HTRecipeType -import hiiragi283.lib.recipe.display.HTPotionSlotDisplay import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -106,7 +105,6 @@ data object Ragium : HTCommonMod() { ) } event.register(Registries.DATA_COMPONENT_TYPE) { helper -> - helper.register(RagiumAPI.id(HTConstants.BOTTLE_TYPE), RagiumDataComponents.BOTTLE_TYPE) helper.register(RagiumAPI.id(HTConstants.ENERGY), RagiumDataComponents.ENERGY) helper.register(RagiumAPI.id(HTConstants.FLUID), RagiumDataComponents.FLUID) helper.register(RagiumAPI.id("memory_disc_data"), RagiumDataComponents.MEMORY_DISC_DATA) @@ -127,9 +125,6 @@ data object Ragium : HTCommonMod() { helper.register(recipeType.keyOrThrow, recipeType) } } - event.register(Registries.SLOT_DISPLAY) { helper -> - helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionSlotDisplay.TYPE) - } event.register(NeoForgeRegistries.Keys.FLUID_INGREDIENT_TYPES) { helper -> helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionFluidIngredient.TYPE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index c8274a53d..de8544f6a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -5,22 +5,22 @@ import hiiragi283.lib.collection.asSequence import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.getOrPut import hiiragi283.lib.color.VanillaColoredCollections -import hiiragi283.lib.item.alchemy.HTPotionFluidManager +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.lookup.fromRecipeType import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.registry.getOrNull import hiiragi283.lib.resource.modifyPath -import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.util.identity +import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.fluid.RagiumFluids -import hiiragi283.ragium.common.recipe.RTLingeringBrewingRecipe -import hiiragi283.ragium.common.recipe.RTSplashBrewingRecipe +import hiiragi283.ragium.common.recipe.RTPotionBottleDrainingRecipe +import hiiragi283.ragium.common.recipe.RTPotionBottleFillingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.core.Holder import net.minecraft.core.HolderSet @@ -47,10 +47,6 @@ internal data object RagiumCommon { fun initialize(event: FMLCommonSetupEvent) { event.enqueueWork(::initFluidInteractions) event.enqueueWork(::initRecipeLookups) - - event.enqueueWork { - HTPotionFluidManager.register(RagiumFluids.POTION.getOrThrow(), HTPotionFluidManager.Handler.DEFAULT) - } } private fun initFluidInteractions() { @@ -92,6 +88,23 @@ internal data object RagiumCommon { RagiumRecipeLookups.BREWING.fromRecipeType(RagiumRecipeTypes.BREWING, identity()) RagiumRecipeLookups.PLANTING.fromRecipeType(RagiumRecipeTypes.PLANTING, identity()) // runtime recipes + RagiumRecipeLookups.DRAINING.addRecipes( + HTBottleType.entries.associate { bottleType: HTBottleType -> + Pair( + RecipeKey(RagiumAPI.id("/${RagiumConstants.DRAINING}/potion_bottle/${bottleType.serializedName}")), + RTPotionBottleDrainingRecipe(bottleType) + ) + } + ) + RagiumRecipeLookups.FILLING.addRecipes( + HTBottleType.entries.associate { bottleType: HTBottleType -> + Pair( + RecipeKey(RagiumAPI.id("/${RagiumConstants.FILLING}/potion_bottle/${bottleType.serializedName}")), + RTPotionBottleFillingRecipe(bottleType) + ) + } + ) + RagiumRecipeLookups.BATHING.addSubLookup { (_, registries: RegistryAccess) -> val oxygen: HolderSet.Named = registries.getOrNull(RagiumFluids.OXYGEN.fluidTag) ?: return@addSubLookup sequenceOf() @@ -173,9 +186,5 @@ internal data object RagiumCommon { }.build() } } - RagiumRecipeLookups.BREWING.addRecipes( - RecipeKey(vanillaId("/${RagiumConstants.BREWING}/splash_potion")) to RTSplashBrewingRecipe, - RecipeKey(vanillaId("/${RagiumConstants.BREWING}/lingering_potion")) to RTLingeringBrewingRecipe - ) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt index d7920e0f5..fe89e331c 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt @@ -1,15 +1,14 @@ package hiiragi283.ragium.common.fluid import hiiragi283.lib.fluid.HTFluidType +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.text.Text import net.minecraft.world.item.ItemStack import net.neoforged.neoforge.fluids.FluidStack class HTPotionFluidType(properties: Properties) : HTFluidType(properties) { - override fun getDescription(stack: FluidStack): Text = - HTPotionHelper.getContents(stack)?.getText() ?: super.getDescription() + override fun getDescription(stack: FluidStack): Text = HTPotionHelper.getPotionName(stack, HTBottleType.DEFAULT) - override fun getBucket(stack: FluidStack): ItemStack = - HTPotionHelper.getContents(stack)?.toBucketStack() ?: super.getBucket(stack) + override fun getBucket(stack: FluidStack): ItemStack = HTPotionHelper.createBuket(stack).create() } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt index f9e2f1860..593d12eba 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.common.item import hiiragi283.lib.item.HTPotionBasedItem +import hiiragi283.lib.item.alchemy.HTBottleType import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.text.Text import hiiragi283.lib.text.translatableText @@ -15,12 +16,12 @@ class HTPotionBucketItem(properties: Properties) : HTPotionBasedItem(properties) constructor(content: Fluid, properties: Properties) : this(properties) override fun getName(stack: ItemStack): Text { - val potionName: Text = HTPotionHelper.getContents(stack)?.getText() ?: return super.getName(stack) + val potionName: Text = HTPotionHelper.getPotionName(stack, HTBottleType.DEFAULT) return translatableText(super.descriptionId, potionName) } class BucketHandler(itemAccess: ItemAccess) : HTCustomBucketItemHandler(itemAccess) { override fun getResourceFrom(accessResource: ItemResource, index: Int): FluidResource = - HTPotionHelper.getContents(accessResource)?.toFluidTemplate().let(FluidResource::of) + HTPotionHelper.createFluid(accessResource).let(FluidResource::of) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 48be0f2c3..418d13a24 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -126,6 +126,12 @@ data object RagiumItems { @JvmField val BEESWAX: HTSimpleDeferredItem = REGISTER.registerItem("beeswax", ::HoneycombItem) + @JvmField + val SPLASH_BOTTLE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("splash_bottle") + + @JvmField + val LINGERING_BOTTLE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("lingering_bottle") + // Electronics // Arcane diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt b/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt index f23f40431..ab24bad40 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/alchemy/RagiumPotionFluidAccess.kt @@ -2,8 +2,15 @@ package hiiragi283.ragium.common.item.alchemy import hiiragi283.lib.item.alchemy.HTPotionFluidAccess import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.resource.vanillaId import hiiragi283.ragium.common.fluid.RagiumFluids +import hiiragi283.ragium.common.item.RagiumItems class RagiumPotionFluidAccess : HTPotionFluidAccess { override val fluidContent: HTFluidContent get() = RagiumFluids.POTION + + override val glassBottle: HTSimpleDeferredItem = HTSimpleDeferredItem(vanillaId("glass_bottle")) + override val splashBottle: HTSimpleDeferredItem get() = RagiumItems.SPLASH_BOTTLE + override val lingeringBottle: HTSimpleDeferredItem get() = RagiumItems.LINGERING_BOTTLE } diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt deleted file mode 100644 index cef681716..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTLingeringBrewingRecipe.kt +++ /dev/null @@ -1,32 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import net.minecraft.world.item.ItemInstance -import net.minecraft.world.item.Items -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTLingeringBrewingRecipe : HTItemAndFluidToFluidRecipe { - override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { - !first.`is`(Items.DRAGON_BREATH) -> false - HTPotionHelper.getContents(second)?.bottleType != HTBottleType.SPLASH -> false - else -> second.amount() >= FluidType.BUCKET_VOLUME - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = - HTPotionHelper.getContents(second)?.copy(bottleType = HTBottleType.LINGERING)?.toFluidStack() - ?: FluidStack.EMPTY - - override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = - when (test(first, second)) { - true -> 1 to FluidType.BUCKET_VOLUME - false -> 0 to 0 - } - - override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt new file mode 100644 index 000000000..9c21ff5cd --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt @@ -0,0 +1,30 @@ +package hiiragi283.ragium.common.recipe + +import hiiragi283.lib.item.alchemy.HTBottleType +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.result.HTItemAndFluidResult +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.crafting.SingleRecipeInput + +@JvmRecord +data class RTPotionBottleDrainingRecipe(val bottleType: HTBottleType, override val progressData: HTProgressData) : + HTItemToItemAndFluidRecipe, + HTProgressRecipe.Simple { + constructor(bottleType: HTBottleType) : this(bottleType, HTProgressData.time(60)) + + override fun test(input: ItemInstance): Boolean = + input.`is`(bottleType.filledItem) && HTPotionHelper.hasAnyEffect(input) + + override fun apply(input: ItemInstance): HTItemAndFluidResult = HTItemAndFluidResult( + bottleType.emptyItem.toStack(), + HTPotionHelper.createFluid(input, HTPotionHelper.BOTTLE_AMOUNT) + ) + + override fun getRequiredAmount(input: ItemInstance): Int = when { + test(input) -> 1 + else -> 0 + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt new file mode 100644 index 000000000..4aea2ca51 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleFillingRecipe.kt @@ -0,0 +1,33 @@ +package hiiragi283.ragium.common.recipe + +import hiiragi283.lib.item.ItemStack +import hiiragi283.lib.item.alchemy.HTBottleType +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.neoforged.neoforge.fluids.FluidInstance + +@JvmRecord +data class RTPotionBottleFillingRecipe(val bottleType: HTBottleType, override val progressData: HTProgressData) : + HTItemAndFluidToItemRecipe, + HTProgressRecipe.Simple { + constructor(bottleType: HTBottleType) : this(bottleType, HTProgressData.time(60)) + + override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { + !first.`is`(bottleType.emptyItem) -> false + !HTPotionHelper.hasAnyEffect(second) -> false + else -> second.amount() >= HTPotionHelper.BOTTLE_AMOUNT + } + + override fun apply(first: ItemInstance, second: FluidInstance): ItemStack = + ItemStack(bottleType.filledItem, 1, HTPotionHelper.createPotionPatch(second)) + + override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = when { + test(first, second) -> 1 to HTPotionHelper.BOTTLE_AMOUNT + else -> 0 to 0 + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt deleted file mode 100644 index 2cffb22e6..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTSplashBrewingRecipe.kt +++ /dev/null @@ -1,31 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.item.alchemy.HTBottleType -import hiiragi283.lib.item.alchemy.HTPotionHelper -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import net.minecraft.world.item.ItemInstance -import net.neoforged.neoforge.common.Tags -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTSplashBrewingRecipe : HTItemAndFluidToFluidRecipe { - override fun test(first: ItemInstance, second: FluidInstance): Boolean = when { - !first.`is`(Tags.Items.GUNPOWDERS) -> false - HTPotionHelper.getContents(second)?.bottleType != HTBottleType.DEFAULT -> false - else -> second.amount() >= FluidType.BUCKET_VOLUME - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = - HTPotionHelper.getContents(second)?.copy(bottleType = HTBottleType.SPLASH)?.toFluidStack() ?: FluidStack.EMPTY - - override fun getRequiredAmount(first: ItemInstance, second: FluidInstance): Pair = - when (test(first, second)) { - true -> 1 to FluidType.BUCKET_VOLUME - false -> 0 to 0 - } - - override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = HTProgressData.time(200) -} From d49eb09e79d62f5bd4c678d436c937fa2c9e27ef Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:01:30 +0900 Subject: [PATCH 27/28] =?UTF-8?q?refactor:=20=E3=83=AC=E3=82=B7=E3=83=94?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E7=94=9F=E6=88=90=E9=96=A2?= =?UTF-8?q?=E9=80=A3=E3=81=AE=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 1 - .../client/integration/jei/RagiumJeiPlugin.kt | 2 +- .../data/recipe/RagiumArcaneRecipeProvider.kt | 2 +- .../data/recipe/RagiumBioRecipeProvider.kt | 10 +++++----- .../data/recipe/RagiumChemicalRecipeProvider.kt | 2 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 6 +++--- .../data/recipe/RagiumHeatRecipeProvider.kt | 2 +- .../recipe/RagiumMechanicalRecipeProvider.kt | 8 ++++---- .../HTDoubleItemToItemRecipeBuilder.kt | 6 ++++-- .../{ => builder}/HTFluidToRecipeBuilder.kt | 7 +++++-- .../HTItemAndFluidToRecipeBuilder.kt | 8 ++++++-- .../HTItemToDoubleItemRecipeBuilder.kt | 6 ++++-- .../HTItemToItemAndFluidRecipeBuilder.kt | 7 +++++-- .../{ => builder}/HTItemToRecipeBuilder.kt | 7 +++++-- .../{ => builder}/HTProgressRecipeBuilder.kt | 2 +- .../data/recipe/{ => builder}/HTRecipeBuilder.kt | 9 +-------- .../{ => ingredient}/HTFluidIngredientBuilder.kt | 2 +- .../{ => ingredient}/HTItemIngredientBuilder.kt | 2 +- .../recipe/{ => result}/HTFluidResultBuilder.kt | 2 +- .../recipe/{ => result}/HTItemResultBuilder.kt | 2 +- .../hiiragi283/lib/item/HTPotionBasedItem.kt | 6 ++---- .../lib/item/alchemy/HTPotionHelper.kt | 7 ++++--- .../lib/recipe/base/HTDoubleItemToItemRecipe.kt | 2 +- .../lib/recipe/base/HTFluidToRecipe.kt | 2 +- .../lib/recipe/base/HTItemAndFluidToRecipe.kt | 2 +- .../lib/recipe/base/HTItemToDoubleItemRecipe.kt | 2 +- .../hiiragi283/lib/recipe/base/HTItemToRecipe.kt | 2 +- .../lib/recipe/result/HTFluidResult.kt | 8 +++----- .../hiiragi283/lib/recipe/result/HTItemResult.kt | 4 ++-- .../lib/recipe/result/HTRecipeResult.kt | 2 +- .../RTElectrolyzingRecipeBuilder.kt | 12 ++++++------ .../{ => builder}/RTEnchantingRecipeBuilder.kt | 6 +++--- .../{ => builder}/RTReactingRecipeBuilder.kt | 12 ++++++------ .../{ => builder}/RTRefiningRecipeBuilder.kt | 12 ++++++------ .../recipe/{ => builder}/RagiumRecipeBuilders.kt | 16 ++++++++-------- .../hiiragi283/ragium/common/RagiumCommon.kt | 2 +- 36 files changed, 98 insertions(+), 92 deletions(-) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTDoubleItemToItemRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTFluidToRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTItemAndFluidToRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTItemToDoubleItemRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTItemToItemAndFluidRecipeBuilder.kt (89%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTItemToRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTProgressRecipeBuilder.kt (97%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => builder}/HTRecipeBuilder.kt (93%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => ingredient}/HTFluidIngredientBuilder.kt (97%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => ingredient}/HTItemIngredientBuilder.kt (97%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => result}/HTFluidResultBuilder.kt (98%) rename src/lib/kotlin/hiiragi283/lib/data/recipe/{ => result}/HTItemResultBuilder.kt (98%) rename src/lib/kotlin/hiiragi283/ragium/api/data/recipe/{ => builder}/RTElectrolyzingRecipeBuilder.kt (84%) rename src/lib/kotlin/hiiragi283/ragium/api/data/recipe/{ => builder}/RTEnchantingRecipeBuilder.kt (91%) rename src/lib/kotlin/hiiragi283/ragium/api/data/recipe/{ => builder}/RTReactingRecipeBuilder.kt (86%) rename src/lib/kotlin/hiiragi283/ragium/api/data/recipe/{ => builder}/RTRefiningRecipeBuilder.kt (84%) rename src/lib/kotlin/hiiragi283/ragium/api/data/recipe/{ => builder}/RagiumRecipeBuilders.kt (94%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 291366039..b48817374 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,6 @@ on: push: tags: - "v*.*.*" - workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index cac77a973..df6d2431c 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -19,7 +19,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.recipe.HTOreSlurryData import hiiragi283.ragium.api.data.recipe.HTOreSlurryDataHelper -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt index 3c19cb611..aa5d09087 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.RagiumMaterial import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt index 4875f5b32..841eb992a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt @@ -5,7 +5,7 @@ import hiiragi283.lib.item.component.PotionContents import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.RagiumMaterial import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput @@ -62,7 +62,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "hunger" ) } - recipeId replace "potion/hunger" + recipeId replace id("potion/hunger") }.save(exporter) // Wither // Health Boost @@ -82,7 +82,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "darkness" ) } - recipeId replace "potion/darkness" + recipeId replace id("potion/darkness") }.save(exporter) // Golden Apple @@ -96,7 +96,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "golden_apple" ) } - recipeId replace "potion/golden_apple" + recipeId replace id("potion/golden_apple") }.save(exporter) RagiumRecipeBuilders.brewing { itemIngredient { items { +Items.ENCHANTED_GOLDEN_APPLE } } @@ -108,7 +108,7 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< customName = "enchanted_golden_apple" ) } - recipeId replace "potion/enchanted_golden_apple" + recipeId replace id("potion/enchanted_golden_apple") }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 75d395bb3..14d72ec45 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.fluid.RagiumFluids diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index e7934f16a..d5a1b94e7 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks @@ -117,7 +117,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.CRUDE_OIL amount = 250 } - recipeId replace "crude_oil_from_soul_sand" + recipeId replace id("crude_oil_from_soul_sand") }.save(exporter) // Soul Soil -> Clay + Crude Oil RagiumRecipeBuilders.pyrolyzing { @@ -127,7 +127,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.CRUDE_OIL amount = 250 } - recipeId replace "crude_oil_from_soul_soil" + recipeId replace id("crude_oil_from_soul_soil") }.save(exporter) // Crude Oil -> Naphtha + Residue Oil RagiumRecipeBuilders.refining { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 231c41aa0..49d6f6677 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index cc6a04da8..5820fa814 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -2,15 +2,15 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.color.HTColoredCollection import hiiragi283.lib.color.VanillaColoredCollections -import hiiragi283.lib.data.recipe.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType @@ -768,7 +768,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable +RagiumFluids.HONEY amount = 250 } - recipeId replace "honey_from_bottle" + recipeId replace id("honey_from_bottle") }.save(exporter) // Wet Sponge -> Sponge + Water RagiumRecipeBuilders.draining { @@ -782,7 +782,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable ingredient { items { +Items.HONEYCOMB } } itemResult { +RagiumItems.BEESWAX } fluidResult { +RagiumFluids.HONEY } - recipeId replace "honey_from_comb" + recipeId replace id("honey_from_comb") }.save(exporter) } diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt index 5234a4a6c..d6e3a52ab 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTDoubleItemToItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTDoubleItemToItemRecipeBuilder.kt @@ -1,7 +1,9 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult @@ -20,7 +22,7 @@ import kotlin.contracts.contract */ class HTDoubleItemToItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(primary, secondary, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt index c8cc0b95b..33ad0d067 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -18,7 +21,7 @@ abstract class HTFluidToRecipeBuilder, out RECIPE : R prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt index b06c7de37..f28ad7d2c 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt @@ -1,7 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient @@ -25,7 +29,7 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - final override fun getRecipeId(): Identifier = result.getId() + final override fun getRecipeId(): Identifier? = result.getId() final override fun createRecipe(): RECIPE = factory.create(itemIngredient, fluidIngredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt index fb0b4cfbd..c2d02589a 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToDoubleItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToDoubleItemRecipeBuilder.kt @@ -1,7 +1,9 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult @@ -21,7 +23,7 @@ import kotlin.contracts.contract */ class HTItemToDoubleItemRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier = primary.getId() + override fun getRecipeId(): Identifier? = primary.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, primary, secondary, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt similarity index 89% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt index 62e2929dd..47df2096a 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToItemAndFluidRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -21,7 +24,7 @@ import kotlin.contracts.contract */ class HTItemToItemAndFluidRecipeBuilder>(prefix: String, private val factory: Factory) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier = itemResult.getId() + override fun getRecipeId(): Identifier? = itemResult.getId() ?: fluidResult.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt index d384a09ef..09fa1f660 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt @@ -1,7 +1,10 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -18,7 +21,7 @@ abstract class HTItemToRecipeBuilder, out RECIPE : Re prefix: String, private val factory: Factory ) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier = result.getId() + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt similarity index 97% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt index 160e4022c..1abab35f0 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTProgressRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTProgressRecipeBuilder.kt @@ -1,4 +1,4 @@ -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder import hiiragi283.lib.recipe.base.HTProgressData import net.minecraft.world.item.crafting.Recipe diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt similarity index 93% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt index babfc271d..e12dcf7ec 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTRecipeBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.builder import hiiragi283.lib.data.ConditionBuilder import hiiragi283.lib.data.ConditionalExporter @@ -86,13 +86,6 @@ abstract class HTRecipeBuilder>(private val prefix: Strin modify { id: Identifier -> id.withSuffix(suffix) } } - /** - * 現在の[ID][Identifier]を[path]で置換します。 - */ - infix fun replace(path: String) { - modify { id: Identifier -> id.withPath(path) } - } - /** * 現在の[ID][Identifier]を[newId]で置換します。 */ diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt similarity index 97% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt index cc60c4de2..a2d732b5b 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTFluidIngredientBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.ingredient import hiiragi283.lib.data.HolderAcceptor import hiiragi283.lib.recipe.ingredient.HTFluidIngredient diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt similarity index 97% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt index c355d73c5..9a02b0c8f 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemIngredientBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/ingredient/HTItemIngredientBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.ingredient import hiiragi283.lib.data.HolderAcceptor import hiiragi283.lib.recipe.ingredient.HTItemIngredient diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt similarity index 98% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt index 54c07c964..928f3a051 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTFluidResultBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTFluidResultBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.result import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.registry.HTDeferredHolder diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt similarity index 98% rename from src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt rename to src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt index 99cfd07dc..3eac0cbc0 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTItemResultBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/result/HTItemResultBuilder.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.lib.data.recipe +package hiiragi283.lib.data.recipe.result import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.registry.HTDeferredBlockAndItem diff --git a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt index 5cfa7f0ff..615ac21c9 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/HTPotionBasedItem.kt @@ -5,12 +5,10 @@ import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.Registries -import net.minecraft.resources.Identifier import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.alchemy.PotionContents -import kotlin.jvm.optionals.getOrElse /** * ポーションに基づいた[Item]の拡張クラスです。 @@ -29,8 +27,8 @@ open class HTPotionBasedItem(properties: Properties) : override fun getCreatorModId(registries: HolderLookup.Provider, itemStack: ItemStack): String? = HTPotionHelper.getPotionId(itemStack) - .map(Identifier::getNamespace) - .getOrElse { super.getCreatorModId(registries, itemStack) } + ?.namespace + ?: super.getCreatorModId(registries, itemStack) // HTSubCreativeTabContents // diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt index a2c94ff3d..7dcd0c269 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt @@ -16,7 +16,7 @@ import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.FluidType -import java.util.Optional +import kotlin.jvm.optionals.getOrNull /** * @author Hiiragi Tsubasa @@ -64,13 +64,14 @@ data object HTPotionHelper { // Potion Id @JvmStatic - fun getPotionId(getter: DataComponentGetter): Optional = getContents(getter).let(::getPotionId) + fun getPotionId(getter: DataComponentGetter): Identifier? = getContents(getter).let(::getPotionId) @JvmStatic - fun getPotionId(contents: PotionContents): Optional = contents + fun getPotionId(contents: PotionContents): Identifier? = contents .potion() .flatMap(Holder::unwrapKey) .map(ResourceKey::identifier) + .getOrNull() // Name diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt index 9a11d3f47..8ddd07c45 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTDoubleItemToItemRecipe.kt @@ -2,7 +2,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTDoubleItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTDoubleItemToItemRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.serialization.codec.HTCodecs diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt index 3bbc08863..138434b65 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt index 732c7e05e..74aa006c5 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemAndFluidToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemAndFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt index 291829734..6d6e09ea6 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt @@ -2,7 +2,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.recipe.result.createOrEmpty diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt index d02eccd98..49101c9ba 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt @@ -3,7 +3,7 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt index 9a45b499b..2cff7c1f9 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt @@ -9,7 +9,6 @@ import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.util.DFUEither import hiiragi283.lib.util.fold -import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentPatch @@ -67,7 +66,7 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult { - fun getId(): Identifier + fun getId(): Identifier? /** * 完成品を取得します。 diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt similarity index 84% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt index a97767dd9..1431bf7d9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTElectrolyzingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemIngredientBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTElectrolyzingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.ELECTROLYZING) { - override fun getRecipeId(): Identifier = results.first().getId() + override fun getRecipeId(): Identifier? = results.firstOrNull()?.getId() override fun createRecipe(): RTElectrolyzingRecipe = RTElectrolyzingRecipe(itemIngredient, fluidIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt similarity index 91% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt index 59df62bc5..748049214 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTEnchantingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTEnchantingRecipeBuilder.kt @@ -1,9 +1,9 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTItemIngredientBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.item.component.buildItemEnchantments import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.registry.getKeyOrThrow diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt similarity index 86% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt index b2d76278a..173b4bb9e 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTReactingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemResultBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -20,7 +20,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTReactingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REACTING) { - override fun getRecipeId(): Identifier = results.map(HTItemResult::getId, HTFluidResult::getId) + override fun getRecipeId(): Identifier? = results.map(HTItemResult::getId, HTFluidResult::getId) override fun createRecipe(): RTReactingRecipe.Basic = RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt similarity index 84% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt index 8f78c8ecf..eed282273 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RTRefiningRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt @@ -1,11 +1,11 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe +package hiiragi283.ragium.api.data.recipe.builder -import hiiragi283.lib.data.recipe.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.HTItemResultBuilder -import hiiragi283.lib.data.recipe.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult @@ -19,7 +19,7 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTRefiningRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REFINING) { - override fun getRecipeId(): Identifier = fluidResult.getId() + override fun getRecipeId(): Identifier? = fluidResult.getId() override fun createRecipe(): RTRefiningRecipe = RTRefiningRecipe(ingredient, itemResult, fluidResult, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt similarity index 94% rename from src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt rename to src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 94609b870..555cf195f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -1,13 +1,13 @@ @file:OptIn(ExperimentalContracts::class) -package hiiragi283.ragium.api.data.recipe - -import hiiragi283.lib.data.recipe.HTDoubleItemToItemRecipeBuilder -import hiiragi283.lib.data.recipe.HTFluidToRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemAndFluidToRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToDoubleItemRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToItemAndFluidRecipeBuilder -import hiiragi283.lib.data.recipe.HTItemToRecipeBuilder +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.data.recipe.builder.HTDoubleItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToItemAndFluidRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTAlloyingRecipe import hiiragi283.ragium.api.recipe.RTAssemblingRecipe diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index de8544f6a..d09845413 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -15,7 +15,7 @@ import hiiragi283.lib.resource.modifyPath import hiiragi283.lib.util.identity import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants -import hiiragi283.ragium.api.data.recipe.RagiumRecipeBuilders +import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.fluid.RagiumFluids From 55b34ac610b5c1c771855f1710660b457aa5b516 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 17 Sep 2026 23:04:36 +0900 Subject: [PATCH 28/28] =?UTF-8?q?refactor:=20=E7=B4=B0=E3=81=8B=E3=81=84?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/hiiragi283/lib/data/ConditionalExporter.kt | 10 +++++----- .../kotlin/hiiragi283/lib/data/ExporterDataProvider.kt | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt b/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt index e6249295a..2def4557a 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ConditionalExporter.kt @@ -11,18 +11,18 @@ import net.neoforged.neoforge.common.conditions.ICondition fun interface ConditionalExporter { /** * 値を登録します。 - * @param id 受け取ったID + * @param key 受け取ったID * @param value 受け取った値 * @param conditions 値を読み込む条件の一覧 */ - fun accept(id: ResourceKey, value: T, conditions: List) + fun accept(key: ResourceKey, value: T, conditions: List) /** * 値を登録します。 - * @param id 受け取ったID + * @param key 受け取ったID * @param value 受け取った値 */ - fun accept(id: ResourceKey, value: T) { - accept(id, value, listOf()) + fun accept(key: ResourceKey, value: T) { + accept(key, value, listOf()) } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt index 2bd8b0d81..0de1f6c0c 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt @@ -61,11 +61,11 @@ abstract class ExporterDataProvider( .thenCompose { registries: HolderLookup.Provider -> val map: MutableMap, WithConditions> = Object2ObjectOpenHashMap() this.registries = registries - this.exporter = ConditionalExporter { id: ResourceKey, value: R, conditions: List -> - val fixedId: ResourceKey = modifyId(id) - val oldValue: WithConditions? = map.put(fixedId, WithConditions(conditions, value)) + this.exporter = ConditionalExporter { key: ResourceKey, value: R, conditions: List -> + val fixedKey: ResourceKey = modifyId(key) + val oldValue: WithConditions? = map.put(fixedKey, WithConditions(conditions, value)) if (oldValue != null) { - error("Duplicate registration for $fixedId, new=$value, old=$oldValue") + error("Duplicate registration for $fixedKey, new=$value, old=$oldValue") } } exportValues()