From 43396ec10a3386c203df9a68f2c97447de6557d6 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Fri, 25 Sep 2026 22:17:08 +0900 Subject: [PATCH 01/38] =?UTF-8?q?feat:=20HTElement=20=E3=81=A8=20HTChemica?= =?UTF-8?q?l=20=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/data/RagiumDataGen.kt | 4 + .../data/lang/RagiumEnglishLangProvider.kt | 8 +- .../data/lang/RagiumJapaneseLangProvider.kt | 8 +- .../data/ragium/ragium/chemical/alumina.json | 13 +++ .../data/ragium/ragium/chemical/aluminum.json | 4 + .../data/ragium/ragium/chemical/carbon.json | 4 + .../data/ragium/ragium/chemical/chlorine.json | 5 + .../data/ragium/ragium/chemical/diamond.json | 4 + .../data/ragium/ragium/chemical/hydrogen.json | 5 + .../data/ragium/ragium/chemical/nitrogen.json | 5 + .../data/ragium/ragium/chemical/oxygen.json | 5 + .../data/ragium/ragium/chemical/silicon.json | 4 + .../data/ragium/ragium/chemical/sulfur.json | 4 + .../data/ragium/ragium/element/aluminum.json | 3 + .../data/ragium/ragium/element/carbon.json | 3 + .../data/ragium/ragium/element/chlorine.json | 3 + .../data/ragium/ragium/element/fluorine.json | 3 + .../data/ragium/ragium/element/hydrogen.json | 3 + .../data/ragium/ragium/element/nitrogen.json | 3 + .../data/ragium/ragium/element/oxygen.json | 3 + .../data/ragium/ragium/element/silicon.json | 3 + .../data/ragium/ragium/element/sodium.json | 3 + .../data/ragium/ragium/element/sulfur.json | 3 + src/lib/kotlin/hiiragi283/lib/HTConstants.kt | 3 + .../lib/data/lang/HTLangProvider.kt | 26 +++-- .../hiiragi283/ragium/api/RagiumRegistries.kt | 38 ++++++ .../ragium/api/data/RagiumDataComponents.kt | 9 +- .../ragium/api/data/chemical/HTChemical.kt | 64 ++++++++++ .../api/data/chemical/HTCompoundChemical.kt | 109 ++++++++++++++++++ .../api/data/chemical/HTSimpleChemical.kt | 44 +++++++ .../api/data/chemical/RagiumChemicals.kt | 89 ++++++++++++++ .../ragium/api/data/element/HTElement.kt | 43 +++++++ .../ragium/api/data/element/RagiumElements.kt | 73 ++++++++++++ .../ragium/api/material/RagiumMaterial.kt | 61 +++++++--- .../kotlin/hiiragi283/ragium/common/Ragium.kt | 7 ++ .../ragium/common/item/RagiumItems.kt | 56 ++++++--- 36 files changed, 673 insertions(+), 52 deletions(-) create mode 100644 src/generated/resources/data/ragium/ragium/chemical/alumina.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/aluminum.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/carbon.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/chlorine.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/diamond.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/hydrogen.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/nitrogen.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/oxygen.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/silicon.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sulfur.json create mode 100644 src/generated/resources/data/ragium/ragium/element/aluminum.json create mode 100644 src/generated/resources/data/ragium/ragium/element/carbon.json create mode 100644 src/generated/resources/data/ragium/ragium/element/chlorine.json create mode 100644 src/generated/resources/data/ragium/ragium/element/fluorine.json create mode 100644 src/generated/resources/data/ragium/ragium/element/hydrogen.json create mode 100644 src/generated/resources/data/ragium/ragium/element/nitrogen.json create mode 100644 src/generated/resources/data/ragium/ragium/element/oxygen.json create mode 100644 src/generated/resources/data/ragium/ragium/element/silicon.json create mode 100644 src/generated/resources/data/ragium/ragium/element/sodium.json create mode 100644 src/generated/resources/data/ragium/ragium/element/sulfur.json create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index c6559c80a..f8f11c48e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -2,6 +2,8 @@ package hiiragi283.ragium.data import hiiragi283.lib.data.createLootTables import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.world.RagiumDamageTypes import hiiragi283.ragium.data.advancement.RagiumAdvancementProvider @@ -39,6 +41,8 @@ data object RagiumDataGen { event.createDatapackRegistryObjects( RegistrySetBuilder() .add(Registries.DAMAGE_TYPE, RagiumDamageTypes::bootstrap) + .add(RagiumRegistries.Keys.ELEMENT, RagiumElements::bootstrap) + .add(RagiumRegistries.Keys.CHEMICAL, RagiumChemicals::bootstrap) .add(RagiumRegistries.Keys.ORE_SLURRY_DATA, RagiumOreSlurryData::bootstrap) .apply(RagiumWorldData::bootstrap) ) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 30609fcef..70afb0f4e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -147,10 +147,10 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumMobEffects.CHEMICAL_BURN, "Chemical Burn") // Ore Slurry - addOreSlurry(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") - addOreSlurry(RagiumOreSlurryData.IRON, "Iron Ore Slurry") - addOreSlurry(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") - addOreSlurry(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") + addFromKey(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") + addFromKey(RagiumOreSlurryData.IRON, "Iron Ore Slurry") + addFromKey(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") + addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") // Potion addPotion(RagiumPotions.FROSTBITE, "Frostbite") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 1eaf4c120..258880ab3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -143,10 +143,10 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumMobEffects.CHEMICAL_BURN, "化学火傷") // Ore Slurry - addOreSlurry(RagiumOreSlurryData.COPPER, "銅の鉱石泥") - addOreSlurry(RagiumOreSlurryData.IRON, "鉄の鉱石泥") - addOreSlurry(RagiumOreSlurryData.GOLD, "金の鉱石泥") - addOreSlurry(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") + addFromKey(RagiumOreSlurryData.COPPER, "銅の鉱石泥") + addFromKey(RagiumOreSlurryData.IRON, "鉄の鉱石泥") + addFromKey(RagiumOreSlurryData.GOLD, "金の鉱石泥") + addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") // Potion addPotion(RagiumPotions.FROSTBITE, "凍傷") diff --git a/src/generated/resources/data/ragium/ragium/chemical/alumina.json b/src/generated/resources/data/ragium/ragium/chemical/alumina.json new file mode 100644 index 000000000..1b6ef7a3f --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/alumina.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:aluminum", + "weight": 2 + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/aluminum.json b/src/generated/resources/data/ragium/ragium/chemical/aluminum.json new file mode 100644 index 000000000..9906ab68d --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/aluminum.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:aluminum" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/carbon.json b/src/generated/resources/data/ragium/ragium/chemical/carbon.json new file mode 100644 index 000000000..ddb636aff --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/carbon.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:carbon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/chlorine.json b/src/generated/resources/data/ragium/ragium/chemical/chlorine.json new file mode 100644 index 000000000..a6de7fe91 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/chlorine.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:chlorine", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/diamond.json b/src/generated/resources/data/ragium/ragium/chemical/diamond.json new file mode 100644 index 000000000..ddb636aff --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/diamond.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:carbon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json new file mode 100644 index 000000000..fa11358a9 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:hydrogen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json b/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json new file mode 100644 index 000000000..5edf8e564 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitrogen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:nitrogen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/oxygen.json b/src/generated/resources/data/ragium/ragium/chemical/oxygen.json new file mode 100644 index 000000000..502fb04d7 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/oxygen.json @@ -0,0 +1,5 @@ +{ + "type": "ragium:simple", + "element": "ragium:oxygen", + "weight": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/silicon.json b/src/generated/resources/data/ragium/ragium/chemical/silicon.json new file mode 100644 index 000000000..43370cd44 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/silicon.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:silicon" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur.json new file mode 100644 index 000000000..7ef322fe2 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:sulfur" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/aluminum.json b/src/generated/resources/data/ragium/ragium/element/aluminum.json new file mode 100644 index 000000000..924ba5d97 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/aluminum.json @@ -0,0 +1,3 @@ +{ + "symbol": "Al" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/carbon.json b/src/generated/resources/data/ragium/ragium/element/carbon.json new file mode 100644 index 000000000..109c0c317 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/carbon.json @@ -0,0 +1,3 @@ +{ + "symbol": "C" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/chlorine.json b/src/generated/resources/data/ragium/ragium/element/chlorine.json new file mode 100644 index 000000000..74ee59107 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/chlorine.json @@ -0,0 +1,3 @@ +{ + "symbol": "Cl" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/fluorine.json b/src/generated/resources/data/ragium/ragium/element/fluorine.json new file mode 100644 index 000000000..47844d253 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/fluorine.json @@ -0,0 +1,3 @@ +{ + "symbol": "F" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/hydrogen.json b/src/generated/resources/data/ragium/ragium/element/hydrogen.json new file mode 100644 index 000000000..a7fb573d7 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/hydrogen.json @@ -0,0 +1,3 @@ +{ + "symbol": "H" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/nitrogen.json b/src/generated/resources/data/ragium/ragium/element/nitrogen.json new file mode 100644 index 000000000..14297777a --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/nitrogen.json @@ -0,0 +1,3 @@ +{ + "symbol": "N" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/oxygen.json b/src/generated/resources/data/ragium/ragium/element/oxygen.json new file mode 100644 index 000000000..152cab0aa --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/oxygen.json @@ -0,0 +1,3 @@ +{ + "symbol": "O" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/silicon.json b/src/generated/resources/data/ragium/ragium/element/silicon.json new file mode 100644 index 000000000..0ecb3ca49 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/silicon.json @@ -0,0 +1,3 @@ +{ + "symbol": "Si" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/sodium.json b/src/generated/resources/data/ragium/ragium/element/sodium.json new file mode 100644 index 000000000..351330585 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/sodium.json @@ -0,0 +1,3 @@ +{ + "symbol": "Na" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/sulfur.json b/src/generated/resources/data/ragium/ragium/element/sulfur.json new file mode 100644 index 000000000..70629b6e5 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/sulfur.json @@ -0,0 +1,3 @@ +{ + "symbol": "S" +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt index e1532670a..311b5adae 100644 --- a/src/lib/kotlin/hiiragi283/lib/HTConstants.kt +++ b/src/lib/kotlin/hiiragi283/lib/HTConstants.kt @@ -72,6 +72,9 @@ data object HTConstants { const val POTIONS = "potions" const val BOTTLE_TYPE = "bottle_type" + const val ELEMENT = "element" + const val CHEMICAL = "chemical" + // Recipes // // Vanilla diff --git a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt index f2cfa19f0..591b9ae5a 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt @@ -7,7 +7,6 @@ import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTPotionContent import hiiragi283.lib.resource.toLanguageKey import hiiragi283.lib.text.HTHasTranslationKey -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.data.PackOutput import net.minecraft.resources.ResourceKey import net.minecraft.world.item.enchantment.Enchantment @@ -49,14 +48,28 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H add(translatable, pattern.translate(langType, name)) } + /** + * @since 26.1.8 + */ + fun addFromKey(key: ResourceKey<*>, value: String) { + add(key.toLanguageKey(), value) + } + + /** + * @since 26.1.8 + */ + fun addFromKey(key: ResourceKey<*>, suffix: String, value: String) { + add(key.toLanguageKey(suffix), value) + } + /** * エンチャントの翻訳名を追加します。 * @param value エンチャントの翻訳名 * @param desc エンチャントの説明 */ protected fun addEnchantment(key: ResourceKey, value: String, desc: String) { - add(key.toLanguageKey(), value) - add(key.toLanguageKey("desc"), desc) + addFromKey(key, value) + addFromKey(key, "desc", desc) } /** @@ -92,11 +105,4 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H add("item.minecraft.lingering_potion.effect.$name", LINGERING_POTION_PATTERN.translate(langType, value)) add("item.minecraft.tipped_arrow.effect.$name", TIPPED_ARROW_PATTERN.translate(langType, value)) } - - /** - * @since 26.1.5 - */ - fun addOreSlurry(key: ResourceKey, value: String) { - add(key.toLanguageKey(), value) - } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt index 1957aa97b..2b41d14c0 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt @@ -1,10 +1,13 @@ package hiiragi283.ragium.api +import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.sync.HTSyncablePayload import hiiragi283.lib.gui.widget.HTWidgetType import hiiragi283.lib.recipe.result.HTFluidResultType import hiiragi283.lib.recipe.result.HTItemResultType import hiiragi283.lib.resource.toId +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.element.HTElement import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.core.Registry import net.minecraft.resources.ResourceKey @@ -21,6 +24,12 @@ import net.neoforged.neoforge.registries.RegistryBuilder */ @EventBusSubscriber data object RagiumRegistries { + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL_TYPE: Registry> = createRegistry(Keys.CHEMICAL_TYPE) + @JvmField val FLUID_RESULT_TYPE: Registry> = createRegistry(Keys.FLUID_RESULT_TYPE) @@ -35,6 +44,7 @@ data object RagiumRegistries { @SubscribeEvent fun registerNewRegistry(event: NewRegistryEvent) { + event.register(CHEMICAL_TYPE) event.register(FLUID_RESULT_TYPE) event.register(ITEM_RESULT_TYPE) event.register(SYNCABLE_SLOT_TYPE) @@ -43,6 +53,16 @@ data object RagiumRegistries { @SubscribeEvent fun registerDynamicRegistries(event: DataPackRegistryEvent.NewRegistry) { + event.dataPackRegistry( + Keys.CHEMICAL, + HTChemical.DISPATCH_CODEC, + HTChemical.DISPATCH_CODEC + ) + event.dataPackRegistry( + Keys.ELEMENT, + HTElement.DIRECT_CODEC, + HTElement.DIRECT_CODEC + ) event.dataPackRegistry( Keys.ORE_SLURRY_DATA, HTOreSlurryData.DIRECT_CODEC, @@ -61,6 +81,12 @@ data object RagiumRegistries { */ data object Keys { // Static + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL_TYPE: ResourceKey>> = createKey("chemical_type") + @JvmField val FLUID_RESULT_TYPE: ResourceKey>> = createKey("fluid_result_type") @@ -75,6 +101,18 @@ data object RagiumRegistries { // Dynamic + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL: ResourceKey> = createKey(HTConstants.CHEMICAL) + + /** + * @since 26.1.8 + */ + @JvmField + val ELEMENT: ResourceKey> = createKey(HTConstants.ELEMENT) + /** * @since 26.1.5 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index ac165d95e..74b1aef61 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -3,6 +3,7 @@ package hiiragi283.ragium.api.data import hiiragi283.lib.data.DataComponentType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.ragium.api.data.chemical.HTChemical import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentType @@ -17,7 +18,13 @@ import java.util.UUID * @since 26.1.0 */ data object RagiumDataComponents { - // Item Stack + /** + * @since 26.1.8 + */ + @JvmField + val CHEMICAL: DataComponentType> = + DataComponentType(HTChemical.HOLDER_CODEC, HTChemical.HOLDER_STREAM_CODEC) + @JvmField val ENERGY: DataComponentType = DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt new file mode 100644 index 000000000..58cfcb7eb --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt @@ -0,0 +1,64 @@ +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.ragium.api.RagiumRegistries +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec + +/** + * 化学物質を表すクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface HTChemical { + companion object { + @JvmField + val DISPATCH_CODEC: Codec = + RagiumRegistries.CHEMICAL_TYPE.byNameCodec().dispatch(HTChemical::type, Type<*>::codec) + + @JvmField + val HOLDER_CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.CHEMICAL, DISPATCH_CODEC) + + @JvmField + val DISPATCH_STREAM_CODEC: StreamCodec = + ByteBufCodecs.registry(RagiumRegistries.Keys.CHEMICAL_TYPE).dispatch(HTChemical::type, Type<*>::streamCodec) + + @JvmField + val HOLDER_STREAM_CODEC: StreamCodec> = + HTStreamCodecs.holder(RagiumRegistries.Keys.CHEMICAL, DISPATCH_STREAM_CODEC) + + @JvmField + val WEIGHT_CODEC: MapCodec = Codec.intRange(1, 99).optionalFieldOf("weight", 1) + + @JvmStatic + fun format(weight: Int): String = when { + //値が1の場合はパス + weight <= 1 -> "" + + else -> buildString { + //化学式の下付き数字の桁数調整 + val subscript1: Char = '\u2080' + (weight % 10) + val subscript10: Char = '\u2080' + (weight / 10) + //2桁目が0でない場合,下付き数字を2桁にする + this.append( + buildString { + if (subscript10 != '\u2080') this.append(subscript10) + this.append(subscript1) + } + ) + } + } + } + + fun type(): Type + + fun getChemicalFormula(): String + + @JvmRecord + data class Type(val codec: MapCodec, val streamCodec: StreamCodec) +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt new file mode 100644 index 000000000..157f1a4ee --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt @@ -0,0 +1,109 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.nelOrElement +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.serialization.network.nelOf +import hiiragi283.lib.util.Either +import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.element.HTElement +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.core.Holder +import net.minecraft.core.HolderGetter +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec +import net.minecraft.resources.ResourceKey +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 化合物を表す[HTChemical]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTCompoundChemical(val composition: Nel, Holder>, Int>>) : + HTChemical { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.mapPair( + HTCodecs.mapEither( + HTChemical.HOLDER_CODEC.fieldOf(HTConstants.CHEMICAL), + HTElement.HOLDER_CODEC.fieldOf(HTConstants.ELEMENT) + ), + HTChemical.WEIGHT_CODEC + ).codec().nelOrElement().fieldOf("composition").xmap(::HTCompoundChemical, HTCompoundChemical::composition) + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTStreamCodecs.pair( + HTStreamCodecs.either(HTChemical.HOLDER_STREAM_CODEC, HTElement.HOLDER_STREAM_CODEC), + ByteBufCodecs.VAR_INT + ).nelOf(), + HTCompoundChemical::composition, + ::HTCompoundChemical + ) + + @JvmField + val TYPE: HTChemical.Type = HTChemical.Type(CODEC, STREAM_CODEC) + + @JvmStatic + inline fun build(context: BootstrapContext<*>, builderAction: Builder.() -> Unit): HTCompoundChemical { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return Builder(context).apply(builderAction).build() + } + } + + override fun type(): HTChemical.Type = TYPE + + override fun getChemicalFormula(): String = composition.joinToString( + separator = "", + transform = { (either: Either, Holder>, weight: Int) -> + buildString { + append( + either.fold( + { chemical: Holder -> "(${chemical.value().getChemicalFormula()})" }, + { element: Holder -> element.value().symbol } + ) + ) + append(HTChemical.format(weight)) + } + } + ) + + class Builder( + private val chemicalGetter: HolderGetter, + private val elementGetter: HolderGetter + ) { + constructor(context: BootstrapContext<*>) : this( + context.lookup(RagiumRegistries.Keys.CHEMICAL), + context.lookup(RagiumRegistries.Keys.ELEMENT) + ) + + private val composition: MutableList, Holder>, Int>> = + ObjectArrayList() + + @JvmName("addChemical") + fun add(chemical: ResourceKey, weight: Int): Builder = apply { + composition += Either.Left(chemicalGetter.getOrThrow(chemical)) to weight + } + + @JvmName("addElement") + fun add(element: ResourceKey, weight: Int): Builder = apply { + composition += Either.Right(elementGetter.getOrThrow(element)) to weight + } + + fun build(): HTCompoundChemical = HTCompoundChemical(composition.toNel()) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt new file mode 100644 index 000000000..b74e43f21 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTSimpleChemical.kt @@ -0,0 +1,44 @@ +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.ragium.api.data.element.HTElement +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec + +/** + * 単体を表す[HTChemical]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTSimpleChemical(val element: Holder, val weight: Int) : HTChemical { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTElement.HOLDER_CODEC.fieldOf(HTConstants.ELEMENT).forGetter(HTSimpleChemical::element), + HTChemical.WEIGHT_CODEC.forGetter(HTSimpleChemical::weight) + ).apply(instance, ::HTSimpleChemical) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTElement.HOLDER_STREAM_CODEC, + HTSimpleChemical::element, + ByteBufCodecs.VAR_INT, + HTSimpleChemical::weight, + ::HTSimpleChemical + ) + + @JvmField + val TYPE: HTChemical.Type = HTChemical.Type(CODEC, STREAM_CODEC) + } + + override fun type(): HTChemical.Type = TYPE + + override fun getChemicalFormula(): String = "${element.value().symbol}${HTChemical.format(weight)}" +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt new file mode 100644 index 000000000..764a879cc --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -0,0 +1,89 @@ +package hiiragi283.ragium.api.data.chemical + +import hiiragi283.lib.registry.createKey +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.element.HTElement +import hiiragi283.ragium.api.data.element.RagiumElements +import net.minecraft.core.HolderGetter +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.resources.ResourceKey + +/** + * Ragiumで追加される[化学物質][HTChemical]をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object RagiumChemicals { + // Simple Substances // + + // 1st Period + @JvmField + val HYDROGEN: ResourceKey = create("hydrogen") + + // 2nd Period + @JvmField + val CARBON: ResourceKey = create("carbon") + + @JvmField + val DIAMOND: ResourceKey = create("diamond") + + @JvmField + val NITROGEN: ResourceKey = create("nitrogen") + + @JvmField + val OXYGEN: ResourceKey = create("oxygen") + + // 3rd Period + @JvmField + val ALUMINUM: ResourceKey = create("aluminum") + + @JvmField + val SILICON: ResourceKey = create("silicon") + + @JvmField + val SULFUR: ResourceKey = create("sulfur") + + @JvmField + val CHLORINE: ResourceKey = create("chlorine") + + // 4th Period + + // Compounds // + + // 3rd Period + @JvmField + val ALUMINA: ResourceKey = create("alumina") + + // Mixtures // + + @JvmStatic + private fun create(name: String): ResourceKey = + RagiumRegistries.Keys.CHEMICAL.createKey(RagiumAPI.id(name)) + + @JvmStatic + fun bootstrap(context: BootstrapContext) { + val getter: HolderGetter = context.lookup(RagiumRegistries.Keys.ELEMENT) + // Simple Substances + context.register(HYDROGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.HYDROGEN), 2)) + + context.register(CARBON, HTSimpleChemical(getter.getOrThrow(RagiumElements.CARBON), 1)) + context.register(DIAMOND, HTSimpleChemical(getter.getOrThrow(RagiumElements.CARBON), 1)) + context.register(NITROGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.NITROGEN), 2)) + context.register(OXYGEN, HTSimpleChemical(getter.getOrThrow(RagiumElements.OXYGEN), 2)) + + context.register(ALUMINUM, HTSimpleChemical(getter.getOrThrow(RagiumElements.ALUMINUM), 1)) + context.register(SILICON, HTSimpleChemical(getter.getOrThrow(RagiumElements.SILICON), 1)) + context.register(SULFUR, HTSimpleChemical(getter.getOrThrow(RagiumElements.SULFUR), 1)) + context.register(CHLORINE, HTSimpleChemical(getter.getOrThrow(RagiumElements.CHLORINE), 2)) + + // Compounds + context.register( + ALUMINA, + HTCompoundChemical.build(context) { + add(RagiumElements.ALUMINUM, 2) + add(RagiumElements.OXYGEN, 3) + } + ) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt new file mode 100644 index 000000000..6b47b963e --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.api.data.element + +import com.mojang.serialization.Codec +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.ragium.api.RagiumRegistries +import io.netty.buffer.ByteBuf +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec +import net.minecraft.util.ExtraCodecs + +/** + * 元素を表すクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTElement(val symbol: String) { + companion object { + @JvmField + val DIRECT_CODEC: Codec = HTCodecs.record { instance -> + instance.group( + ExtraCodecs.NON_EMPTY_STRING.fieldOf("symbol").forGetter(HTElement::symbol) + ).apply(instance, ::HTElement) + } + + @JvmField + val HOLDER_CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.ELEMENT, DIRECT_CODEC) + + @JvmField + val DIRECT_STREAM_CODEC: StreamCodec = StreamCodec.composite( + ByteBufCodecs.STRING_UTF8, + HTElement::symbol, + ::HTElement + ) + + @JvmField + val HOLDER_STREAM_CODEC: StreamCodec> = + HTStreamCodecs.holder(RagiumRegistries.Keys.ELEMENT, DIRECT_STREAM_CODEC) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt new file mode 100644 index 000000000..002c499ed --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt @@ -0,0 +1,73 @@ +package hiiragi283.ragium.api.data.element + +import hiiragi283.lib.registry.createKey +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumRegistries +import net.minecraft.data.worldgen.BootstrapContext +import net.minecraft.resources.ResourceKey + +/** + * Ragiumで追加される[元素][HTElement]をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object RagiumElements { + // 1st Period + @JvmField + val HYDROGEN: ResourceKey = create("hydrogen") + + // 2nd Period + @JvmField + val CARBON: ResourceKey = create("carbon") + + @JvmField + val NITROGEN: ResourceKey = create("nitrogen") + + @JvmField + val OXYGEN: ResourceKey = create("oxygen") + + @JvmField + val FLUORINE: ResourceKey = create("fluorine") + + // 3rd Period + @JvmField + val SODIUM: ResourceKey = create("sodium") + + @JvmField + val ALUMINUM: ResourceKey = create("aluminum") + + @JvmField + val SILICON: ResourceKey = create("silicon") + + @JvmField + val SULFUR: ResourceKey = create("sulfur") + + @JvmField + val CHLORINE: ResourceKey = create("chlorine") + + // 4th Period + + @JvmStatic + private fun create(name: String): ResourceKey = + RagiumRegistries.Keys.ELEMENT.createKey(RagiumAPI.id(name)) + + @JvmStatic + fun bootstrap(context: BootstrapContext) { + fun register(key: ResourceKey, symbol: String) { + context.register(key, HTElement(symbol)) + } + + register(HYDROGEN, "H") + + register(CARBON, "C") + register(NITROGEN, "N") + register(OXYGEN, "O") + register(FLUORINE, "F") + + register(SODIUM, "Na") + register(ALUMINUM, "Al") + register(SILICON, "Si") + register(SULFUR, "S") + register(CHLORINE, "Cl") + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index e72b74ffd..f1a80fa69 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -2,6 +2,9 @@ package hiiragi283.ragium.api.material import hiiragi283.lib.data.lang.HTLangName import hiiragi283.lib.tag.HTMaterialLike +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import net.minecraft.resources.ResourceKey sealed interface RagiumMaterial : HTMaterialLike, @@ -20,6 +23,8 @@ sealed interface RagiumMaterial : val COMPARATOR: Comparator = compareBy(RagiumMaterial::materialName) } + val chemicalKey: ResourceKey? + enum class Fuel(langName: HTLangName) : RagiumMaterial, HTLangName by langName { @@ -38,10 +43,12 @@ sealed interface RagiumMaterial : constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + override val chemicalKey: ResourceKey = RagiumChemicals.CARBON + override val materialName: String = name.lowercase() } - enum class Mineral(langName: HTLangName) : + enum class Mineral(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { // Minecraft @@ -54,7 +61,7 @@ sealed interface RagiumMaterial : // Common SALT("Salt", "食塩"), - SULFUR("Sulfur", "硫黄"), + SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), NITER("Niter", "硝石"), BORAX("Borax", "ホウ砂"), @@ -67,21 +74,24 @@ sealed interface RagiumMaterial : RAGINITE("Raginite", "ラギナイト") ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) open val isVanilla: Boolean = false override val materialName: String = name.lowercase() } - enum class Gem(langName: HTLangName) : + enum class Gem(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { // Minecraft LAPIS("Lapis", "ラピス"), QUARTZ("Quartz", "水晶"), AMETHYST("Amethyst", "アメジスト"), - DIAMOND("Diamond", "ダイヤモンド"), + DIAMOND("Diamond", "ダイヤモンド", RagiumChemicals.DIAMOND), EMERALD("Emerald", "エメラルド"), ECHO("Echo", "残響"), PRISMARINE("Prismarine", "プリズマリン"), @@ -99,12 +109,15 @@ sealed interface RagiumMaterial : CRYOLITE("Cryolite", "氷晶石") ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) override val materialName: String = name.lowercase() } - enum class Metal(langName: HTLangName) : + enum class Metal(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { // Minecraft @@ -120,7 +133,7 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - ALUMINUM("Aluminum", "アルミニウム"), + ALUMINUM("Aluminum", "アルミニウム", RagiumChemicals.ALUMINUM), // Ragium @@ -146,37 +159,49 @@ sealed interface RagiumMaterial : } ; - constructor(enName: String, jaName: String) : this(HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) open val hasRawVariant: Boolean = true override val materialName: String = name.lowercase() } - enum class Other(val isPulp: Boolean, langName: HTLangName) : + enum class Other(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { // Minecraft - WOOD(true, "Wood", "木"), - GLASS(false, "Glass", "ガラス"), - OBSIDIAN(false, "Obsidian", "黒曜石"), - PAPER(true, "Paper", "紙"), + WOOD("Wood", "木") { + override val isPulp: Boolean = true + }, + GLASS("Glass", "ガラス"), + OBSIDIAN("Obsidian", "黒曜石"), + PAPER("Paper", "紙") { + override val isPulp: Boolean = true + }, // Common - CARBON(false, "Carbon", "炭素"), + CARBON("Carbon", "炭素", RagiumChemicals.CARBON), /** * @since 26.1.7 */ - ALUMINA(false, "Alumina", "アルミナ"), + ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINA), /** * @since 26.1.7 */ - SILICON(false, "Silicon", "シリコン") + SILICON("Silicon", "シリコン", RagiumChemicals.SILICON) ; - constructor(isPulp: Boolean, enName: String, jaName: String) : this(isPulp, HTLangName(enName, jaName)) + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + open val isPulp: Boolean = false override val materialName: String = name.lowercase() } diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 19b188271..fe2efe0db 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -17,6 +17,8 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.HTCompoundChemical +import hiiragi283.ragium.api.data.chemical.HTSimpleChemical import hiiragi283.ragium.api.recipe.RagiumRecipeSerializers import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation @@ -86,6 +88,7 @@ data object Ragium : HTCommonMod() { ) } event.register(Registries.DATA_COMPONENT_TYPE) { helper -> + helper.register(RagiumAPI.id(HTConstants.CHEMICAL), RagiumDataComponents.CHEMICAL) helper.register(RagiumAPI.id(HTConstants.ENERGY), RagiumDataComponents.ENERGY) helper.register(RagiumAPI.id(HTConstants.FLUID), RagiumDataComponents.FLUID) helper.register(RagiumAPI.id("memory_disc_data"), RagiumDataComponents.MEMORY_DISC_DATA) @@ -115,6 +118,10 @@ data object Ragium : HTCommonMod() { helper.register(RagiumAPI.id(HTConstants.POTION), HTPotionFluidIngredient.TYPE) } + event.register(RagiumRegistries.Keys.CHEMICAL_TYPE) { helper -> + helper.register(RagiumAPI.id("simple"), HTSimpleChemical.TYPE) + helper.register(RagiumAPI.id("compound"), HTCompoundChemical.TYPE) + } event.register(RagiumRegistries.Keys.FLUID_RESULT_TYPE) { helper -> helper.register(RagiumAPI.id("simple"), HTFluidResult.SimpleEntry.TYPE) helper.register(RagiumAPI.id(HTConstants.POTION), HTFluidResult.PotionEntry.TYPE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 9d0aa3b27..f673a16ac 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -11,9 +11,12 @@ import hiiragi283.lib.registry.HTDeferredItemRegister import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.Text +import hiiragi283.lib.text.toText import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial @@ -22,13 +25,17 @@ import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.component.RagiumToolMaterials import net.minecraft.ChatFormatting +import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponentMap +import net.minecraft.core.component.DataComponentType +import net.minecraft.resources.ResourceKey import net.minecraft.world.item.HoneycombItem import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.item.Rarity +import net.minecraft.world.level.ItemLike import net.neoforged.bus.api.IEventBus import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent import net.neoforged.neoforge.common.tooltip.TooltipLocation @@ -118,6 +125,9 @@ data object RagiumItems { if (material == RagiumMaterial.Metal.NETHERITE) { properties.fireResistant() } + material.chemicalKey?.let { + properties.delayedHolderComponent(RagiumDataComponents.CHEMICAL, it) + } properties } ) @@ -134,13 +144,17 @@ data object RagiumItems { // Heat @JvmField - val COAL_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.COAL_COKE.materialName) + val COAL_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.COAL_COKE.materialName) { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + } @JvmField val TAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("tar") @JvmField - val PITCH_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.PITCH_COKE.materialName) + val PITCH_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.PITCH_COKE.materialName) { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + } // Chemical @JvmField @@ -170,7 +184,9 @@ data object RagiumItems { // Electronics @JvmField - val CRUDE_SILICON: HTSimpleDeferredItem = REGISTER.registerSimpleItem("crude_silicon") + val CRUDE_SILICON: HTSimpleDeferredItem = REGISTER.registerSimpleItem("crude_silicon") { + it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON) + } @JvmField val SILICON_WAFER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("silicon_wafer") @@ -273,6 +289,12 @@ data object RagiumItems { ) }.let(builder::accept) } + event.registerAppender( + TooltipLocation.HEAD + ) { stack: ItemStack, _, _, _, _, builder: Consumer -> + val chemical: Holder = stack.get(RagiumDataComponents.CHEMICAL) ?: return@registerAppender + builder.accept(chemical.value().getChemicalFormula().toText().withStyle(ChatFormatting.YELLOW)) + } } @JvmStatic @@ -293,18 +315,22 @@ data object RagiumItems { @JvmStatic private fun modifyDefaultComponents(event: ModifyDefaultComponentsEvent) { - // Item - event.modify(Items.RAW_COPPER) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.COPPER)) - } - event.modify(Items.RAW_IRON) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.IRON)) - } - event.modify(Items.RAW_GOLD) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.GOLD)) - } - event.modify(Items.ANCIENT_DEBRIS) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> - builder.set(RagiumDataComponents.ORE_SLURRY_DATA, provider.getOrThrow(RagiumOreSlurryData.NETHERITE_SCRAP)) + fun setHolder(item: ItemLike, type: DataComponentType>, key: ResourceKey) { + event.modify(item) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(type, provider.getOrThrow(key)) + } } + // Chemical + setHolder(Items.COAL_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + setHolder(Items.COAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + setHolder(Items.CHARCOAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) + + setHolder(Items.DIAMOND_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) + setHolder(Items.DIAMOND, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) + // Ore Slurry + setHolder(Items.RAW_COPPER, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.COPPER) + setHolder(Items.RAW_IRON, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.IRON) + setHolder(Items.RAW_GOLD, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.GOLD) + setHolder(Items.ANCIENT_DEBRIS, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.NETHERITE_SCRAP) } } From 03806c29b37b716aebe1b11a28c10ec1eed41fcc Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Fri, 25 Sep 2026 22:37:16 +0900 Subject: [PATCH 02/38] =?UTF-8?q?feat:=20=E3=81=95=E3=82=89=E3=81=AB?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E3=81=A8=E5=8C=96=E5=AD=A6=E7=89=A9=E8=B3=AA?= =?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 --- .../data/ragium/ragium/chemical/copper.json | 4 + .../data/ragium/ragium/chemical/cryolite.json | 16 ++++ .../data/ragium/ragium/chemical/fluorite.json | 12 +++ .../data/ragium/ragium/chemical/gold.json | 4 + .../data/ragium/ragium/chemical/iron.json | 4 + .../data/ragium/ragium/chemical/nitrate.json | 12 +++ .../ragium/chemical/potassium_nitrate.json | 11 +++ .../ragium/chemical/silicon_dioxide.json | 12 +++ .../ragium/chemical/sodium_chloride.json | 11 +++ .../data/ragium/ragium/chemical/sulfate.json | 12 +++ .../data/ragium/ragium/element/calcium.json | 3 + .../data/ragium/ragium/element/copper.json | 3 + .../data/ragium/ragium/element/gold.json | 3 + .../data/ragium/ragium/element/iron.json | 3 + .../data/ragium/ragium/element/potassium.json | 3 + .../api/data/chemical/HTCompoundChemical.kt | 8 +- .../api/data/chemical/RagiumChemicals.kt | 87 +++++++++++++++++++ .../ragium/api/data/element/RagiumElements.kt | 22 +++++ .../ragium/api/material/RagiumMaterial.kt | 20 ++--- .../ragium/common/block/RagiumBlocks.kt | 25 ++++-- .../ragium/common/item/RagiumItems.kt | 15 ++++ 21 files changed, 272 insertions(+), 18 deletions(-) create mode 100644 src/generated/resources/data/ragium/ragium/chemical/copper.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/cryolite.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/fluorite.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/gold.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/iron.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/nitrate.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sulfate.json create mode 100644 src/generated/resources/data/ragium/ragium/element/calcium.json create mode 100644 src/generated/resources/data/ragium/ragium/element/copper.json create mode 100644 src/generated/resources/data/ragium/ragium/element/gold.json create mode 100644 src/generated/resources/data/ragium/ragium/element/iron.json create mode 100644 src/generated/resources/data/ragium/ragium/element/potassium.json diff --git a/src/generated/resources/data/ragium/ragium/chemical/copper.json b/src/generated/resources/data/ragium/ragium/chemical/copper.json new file mode 100644 index 000000000..2064f7472 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/copper.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:copper" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/cryolite.json b/src/generated/resources/data/ragium/ragium/chemical/cryolite.json new file mode 100644 index 000000000..2fc87e429 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/cryolite.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium", + "weight": 3 + }, + { + "element": "ragium:aluminum" + }, + { + "element": "ragium:fluorine", + "weight": 6 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/fluorite.json b/src/generated/resources/data/ragium/ragium/chemical/fluorite.json new file mode 100644 index 000000000..f8fce3ded --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/fluorite.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:calcium" + }, + { + "element": "ragium:fluorine", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/gold.json b/src/generated/resources/data/ragium/ragium/chemical/gold.json new file mode 100644 index 000000000..06a9e6d5e --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/gold.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:gold" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/iron.json b/src/generated/resources/data/ragium/ragium/chemical/iron.json new file mode 100644 index 000000000..fff0d9cea --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/iron.json @@ -0,0 +1,4 @@ +{ + "type": "ragium:simple", + "element": "ragium:iron" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitrate.json b/src/generated/resources/data/ragium/ragium/chemical/nitrate.json new file mode 100644 index 000000000..ee421eb5c --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitrate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:nitrogen" + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json b/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json new file mode 100644 index 000000000..322dc32f9 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/potassium_nitrate.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:potassium" + }, + { + "chemical": "ragium:nitrate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json b/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json new file mode 100644 index 000000000..5d8350baf --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/silicon_dioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:silicon" + }, + { + "element": "ragium:oxygen", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json b/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json new file mode 100644 index 000000000..8f576d54d --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sodium_chloride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium" + }, + { + "element": "ragium:chlorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfate.json b/src/generated/resources/data/ragium/ragium/chemical/sulfate.json new file mode 100644 index 000000000..5210ee447 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 4 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/calcium.json b/src/generated/resources/data/ragium/ragium/element/calcium.json new file mode 100644 index 000000000..e63670375 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/calcium.json @@ -0,0 +1,3 @@ +{ + "symbol": "Ca" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/copper.json b/src/generated/resources/data/ragium/ragium/element/copper.json new file mode 100644 index 000000000..1549e9407 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/copper.json @@ -0,0 +1,3 @@ +{ + "symbol": "Cu" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/gold.json b/src/generated/resources/data/ragium/ragium/element/gold.json new file mode 100644 index 000000000..33595d582 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/gold.json @@ -0,0 +1,3 @@ +{ + "symbol": "Au" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/iron.json b/src/generated/resources/data/ragium/ragium/element/iron.json new file mode 100644 index 000000000..d782ef466 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/iron.json @@ -0,0 +1,3 @@ +{ + "symbol": "Fe" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/element/potassium.json b/src/generated/resources/data/ragium/ragium/element/potassium.json new file mode 100644 index 000000000..d46b76fb2 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/element/potassium.json @@ -0,0 +1,3 @@ +{ + "symbol": "K" +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt index 157f1a4ee..96cb9e2b2 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTCompoundChemical.kt @@ -73,7 +73,13 @@ data class HTCompoundChemical(val composition: Nel -> "(${chemical.value().getChemicalFormula()})" }, + { chemical: Holder -> + val formula: String = chemical.value().getChemicalFormula() + when { + weight > 1 -> "($formula)" + else -> formula + } + }, { element: Holder -> element.value().symbol } ) ) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index 764a879cc..e5cc52eb8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -48,13 +48,44 @@ data object RagiumChemicals { val CHLORINE: ResourceKey = create("chlorine") // 4th Period + @JvmField + val IRON: ResourceKey = create("iron") + + @JvmField + val COPPER: ResourceKey = create("copper") + + // 6th Period + @JvmField + val GOLD: ResourceKey = create("gold") // Compounds // + // 2nd Period + @JvmField + val NITRATE: ResourceKey = create("nitrate") + + @JvmField + val POTASSIUM_NITRATE: ResourceKey = create("potassium_nitrate") + + @JvmField + val FLUORITE: ResourceKey = create("fluorite") + + @JvmField + val CRYOLITE: ResourceKey = create("cryolite") + // 3rd Period + @JvmField + val SODIUM_CHLORIDE: ResourceKey = create("sodium_chloride") + @JvmField val ALUMINA: ResourceKey = create("alumina") + @JvmField + val SILICON_DIOXIDE: ResourceKey = create("silicon_dioxide") + + @JvmField + val SULFATE: ResourceKey = create("sulfate") + // Mixtures // @JvmStatic @@ -77,7 +108,49 @@ data object RagiumChemicals { context.register(SULFUR, HTSimpleChemical(getter.getOrThrow(RagiumElements.SULFUR), 1)) context.register(CHLORINE, HTSimpleChemical(getter.getOrThrow(RagiumElements.CHLORINE), 2)) + context.register(IRON, HTSimpleChemical(getter.getOrThrow(RagiumElements.IRON), 1)) + context.register(COPPER, HTSimpleChemical(getter.getOrThrow(RagiumElements.COPPER), 1)) + + context.register(GOLD, HTSimpleChemical(getter.getOrThrow(RagiumElements.GOLD), 1)) + // Compounds + context.register( + NITRATE, + HTCompoundChemical.build(context) { + add(RagiumElements.NITROGEN, 1) + add(RagiumElements.OXYGEN, 3) + } + ) + context.register( + POTASSIUM_NITRATE, + HTCompoundChemical.build(context) { + add(RagiumElements.POTASSIUM, 1) + add(NITRATE, 1) + } + ) + context.register( + FLUORITE, + HTCompoundChemical.build(context) { + add(RagiumElements.CALCIUM, 1) + add(RagiumElements.FLUORINE, 2) + } + ) + context.register( + CRYOLITE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 3) + add(RagiumElements.ALUMINUM, 1) + add(RagiumElements.FLUORINE, 6) + } + ) + + context.register( + SODIUM_CHLORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 1) + add(RagiumElements.CHLORINE, 1) + } + ) context.register( ALUMINA, HTCompoundChemical.build(context) { @@ -85,5 +158,19 @@ data object RagiumChemicals { add(RagiumElements.OXYGEN, 3) } ) + context.register( + SILICON_DIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SILICON, 1) + add(RagiumElements.OXYGEN, 2) + } + ) + context.register( + SULFATE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 4) + } + ) } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt index 002c499ed..2e07a2115 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/RagiumElements.kt @@ -46,6 +46,21 @@ data object RagiumElements { val CHLORINE: ResourceKey = create("chlorine") // 4th Period + @JvmField + val POTASSIUM: ResourceKey = create("potassium") + + @JvmField + val CALCIUM: ResourceKey = create("calcium") + + @JvmField + val IRON: ResourceKey = create("iron") + + @JvmField + val COPPER: ResourceKey = create("copper") + + // 6th Period + @JvmField + val GOLD: ResourceKey = create("gold") @JvmStatic private fun create(name: String): ResourceKey = @@ -69,5 +84,12 @@ data object RagiumElements { register(SILICON, "Si") register(SULFUR, "S") register(CHLORINE, "Cl") + + register(POTASSIUM, "K") + register(CALCIUM, "Ca") + register(IRON, "Fe") + register(COPPER, "Cu") + + register(GOLD, "Au") } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index f1a80fa69..877d5d09a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -60,9 +60,9 @@ sealed interface RagiumMaterial : }, // Common - SALT("Salt", "食塩"), + SALT("Salt", "食塩", RagiumChemicals.SODIUM_CHLORIDE), SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), - NITER("Niter", "硝石"), + NITER("Niter", "硝石", RagiumChemicals.POTASSIUM_NITRATE), BORAX("Borax", "ホウ砂"), /** @@ -89,8 +89,8 @@ sealed interface RagiumMaterial : HTLangName by langName { // Minecraft LAPIS("Lapis", "ラピス"), - QUARTZ("Quartz", "水晶"), - AMETHYST("Amethyst", "アメジスト"), + QUARTZ("Quartz", "水晶", RagiumChemicals.SILICON_DIOXIDE), + AMETHYST("Amethyst", "アメジスト", RagiumChemicals.SILICON_DIOXIDE), DIAMOND("Diamond", "ダイヤモンド", RagiumChemicals.DIAMOND), EMERALD("Emerald", "エメラルド"), ECHO("Echo", "残響"), @@ -101,12 +101,12 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - FLUORITE("Fluorite", "蛍石"), + FLUORITE("Fluorite", "蛍石", RagiumChemicals.FLUORITE), /** * @since 26.1.7 */ - CRYOLITE("Cryolite", "氷晶石") + CRYOLITE("Cryolite", "氷晶石", RagiumChemicals.CRYOLITE) ; constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( @@ -121,9 +121,9 @@ sealed interface RagiumMaterial : RagiumMaterial, HTLangName by langName { // Minecraft - COPPER("Copper", "銅"), - IRON("Iron", "鉄"), - GOLD("Gold", "金"), + COPPER("Copper", "銅", RagiumChemicals.COPPER), + IRON("Iron", "鉄", RagiumChemicals.IRON), + GOLD("Gold", "金", RagiumChemicals.GOLD), NETHERITE("Netherite", "ネザライト") { override val hasRawVariant: Boolean = false }, @@ -176,7 +176,7 @@ sealed interface RagiumMaterial : WOOD("Wood", "木") { override val isPulp: Boolean = true }, - GLASS("Glass", "ガラス"), + GLASS("Glass", "ガラス", RagiumChemicals.SILICON_DIOXIDE), OBSIDIAN("Obsidian", "黒曜石"), PAPER("Paper", "紙") { override val isPulp: Boolean = true diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index bf74266fd..32a5e4163 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -19,6 +19,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTOreBlockPart import hiiragi283.ragium.api.material.HTStorageBlockPart @@ -137,7 +138,11 @@ data object RagiumBlocks { material, REGISTER.registerSimple( part.createName(material), - blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) } + blockFactory = { DropExperienceBlock(UniformInt.of(0, 2), properties.setId(it)) }, + itemProp = { prop: Item.Properties -> + material.chemicalKey?.let { prop.delayedHolderComponent(RagiumDataComponents.CHEMICAL, it) } + prop + } ) ) } @@ -185,8 +190,11 @@ data object RagiumBlocks { // Fluorite @JvmField - val FLUORITE_BLOCK: HTSimpleDeferredBlockAndItem = - REGISTER.registerSimple("fluorite_block", copyOf(Blocks.QUARTZ_BLOCK).mapColor(MapColor.COLOR_GREEN)) + val FLUORITE_BLOCK: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "fluorite_block", + copyOf(Blocks.QUARTZ_BLOCK).mapColor(MapColor.COLOR_GREEN), + itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.FLUORITE) } + ) @JvmField val FLUORITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( @@ -205,8 +213,11 @@ data object RagiumBlocks { // Cryolite @JvmField - val CRYOLITE_BLOCK: HTSimpleDeferredBlockAndItem = - REGISTER.registerSimple("cryolite_block", copyOf(Blocks.QUARTZ_BLOCK)) + val CRYOLITE_BLOCK: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "cryolite_block", + copyOf(Blocks.QUARTZ_BLOCK), + itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } + ) @JvmField val CRYOLITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( @@ -429,13 +440,13 @@ data object RagiumBlocks { RagiumMaterial.Metal.VOID_METAL to Rarity.RARE ).forEach { (material: RagiumMaterial, rarity: Rarity) -> for (part: HTBlockPart in HTBlockPart.entries) { - val block: ItemLike = RagiumBlocks.MATERIAL_BLOCKS[part, material] ?: continue + val block: ItemLike = MATERIAL_BLOCKS[part, material] ?: continue event.modify(block) { builder: DataComponentMap.Builder, _, _ -> builder.set(DataComponents.RARITY, rarity) } } } - event.modify(RagiumBlocks.CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> + event.modify(CREATIVE_BATTERY) { builder: DataComponentMap.Builder, _, _ -> builder.set(DataComponents.RARITY, Rarity.EPIC) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index f673a16ac..74667d001 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -327,6 +327,21 @@ data object RagiumItems { setHolder(Items.DIAMOND_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) setHolder(Items.DIAMOND, RagiumDataComponents.CHEMICAL, RagiumChemicals.DIAMOND) + + setHolder(Items.IRON_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + setHolder(Items.IRON_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + setHolder(Items.IRON_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.IRON) + + setHolder(Items.COPPER_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + setHolder(Items.COPPER_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + setHolder(Items.COPPER_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.COPPER) + + setHolder(Items.GOLD_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + setHolder(Items.GOLD_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + setHolder(Items.GOLD_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + + setHolder(Items.QUARTZ_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + setHolder(Items.QUARTZ, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) // Ore Slurry setHolder(Items.RAW_COPPER, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.COPPER) setHolder(Items.RAW_IRON, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.IRON) From c358a2e813d0c07dc3702beddca000a3453f6481 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Fri, 25 Sep 2026 23:30:25 +0900 Subject: [PATCH 03/38] =?UTF-8?q?feat:=20=E6=B6=B2=E4=BD=93=E3=81=AB?= =?UTF-8?q?=E3=82=82=E5=8C=96=E5=AD=A6=E7=89=A9=E8=B3=AA=E3=81=AE=E3=83=84?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=83=81=E3=83=83=E3=83=97=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20feat:=20=E3=82=B7=E3=83=95=E3=83=88=E3=82=AD?= =?UTF-8?q?=E3=83=BC=E3=82=92=E6=8A=BC=E3=81=99=E3=81=A8=E5=8C=96=E5=AD=A6?= =?UTF-8?q?=E7=89=A9=E8=B3=AA=E3=81=AE=E5=90=8D=E5=89=8D=E3=82=92=E8=A6=8B?= =?UTF-8?q?=E3=82=89=E3=82=8C=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 --- .../hiiragi283/ragium/client/RagiumClient.kt | 62 +++++++++++ .../client/event/RagiumClientEventHandler.kt | 8 +- .../data/lang/RagiumEnglishLangProvider.kt | 56 ++++++++-- .../data/lang/RagiumJapaneseLangProvider.kt | 56 ++++++++-- .../resources/assets/ragium/lang/en_us.json | 28 +++++ .../resources/assets/ragium/lang/ja_jp.json | 28 +++++ .../ragium/chemical/hydrogen_chloride.json | 11 ++ .../ragium/chemical/hydrogen_fluoride.json | 11 ++ .../ragium/ragium/chemical/hydroxide.json | 11 ++ .../ragium/ragium/chemical/nitric_acid.json | 11 ++ .../ragium/chemical/sodium_hydroxide.json | 11 ++ .../ragium/chemical/sulfur_dioxide.json | 12 +++ .../ragium/chemical/sulfur_trioxide.json | 12 +++ .../ragium/ragium/chemical/sulfuric_acid.json | 12 +++ .../data/ragium/ragium/chemical/water.json | 12 +++ .../ragium/api/data/chemical/HTChemical.kt | 7 +- .../api/data/chemical/RagiumChemicals.kt | 100 +++++++++++++++++- .../data/chemical/HTClientChemicalHelper.kt | 25 +++++ .../hiiragi283/ragium/common/RagiumCommon.kt | 43 ++++++++ .../ragium/common/item/RagiumItems.kt | 72 ++----------- 20 files changed, 508 insertions(+), 80 deletions(-) create mode 100644 src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/hydroxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/water.json create mode 100644 src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 4f8e44483..7c25e4c96 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.client import hiiragi283.lib.HTConstants +import hiiragi283.lib.capability.HTFluidCapabilities import hiiragi283.lib.event.HTRegisterWidgetRendererEvent import hiiragi283.lib.fluid.FluidStackTintSource import hiiragi283.lib.fluid.HTFluidModelRegister @@ -8,8 +9,13 @@ import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.mod.HTClientMod import hiiragi283.lib.network.HTPayloadHandlers import hiiragi283.lib.resource.vanillaId +import hiiragi283.lib.text.HTCommonTranslation +import hiiragi283.lib.text.Text +import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper +import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.gui.screen.tooltip.HTMemoryDiscClientTooltipComponent import hiiragi283.ragium.client.gui.widget.HTEnergySlotWidgetRenderer @@ -25,9 +31,11 @@ import hiiragi283.ragium.common.gui.widget.RagiumWidgetTypes import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket import hiiragi283.ragium.common.network.HTUpdateMenuPacket +import net.minecraft.ChatFormatting import net.minecraft.client.resources.model.sprite.Material import net.minecraft.util.ARGB import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.ItemStack import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus import net.neoforged.fml.ModContainer @@ -37,8 +45,12 @@ import net.neoforged.neoforge.client.event.EntityRenderersEvent import net.neoforged.neoforge.client.event.RegisterClientTooltipComponentFactoriesEvent import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent +import net.neoforged.neoforge.common.tooltip.TooltipLocation +import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.transfer.fluid.FluidResource import java.awt.Color +import java.util.function.Consumer @Mod(value = RagiumAPI.MOD_ID, dist = [Dist.CLIENT]) data object RagiumClient : HTClientMod() { @@ -46,6 +58,7 @@ data object RagiumClient : HTClientMod() { eventBus.addListener { event: RegisterClientTooltipComponentFactoriesEvent -> event.register(HTMemoryDiscTooltipComponent::class.java, ::HTMemoryDiscClientTooltipComponent) } + eventBus.addListener(::registerTooltipAppenders) configScreen(container) } @@ -219,4 +232,53 @@ data object RagiumClient : HTClientMod() { event.registerBlockEntityRenderer(RagiumBlockEntityTypes.TANK.get(), ::HTTankBlockEntityRenderer) event.registerBlockEntityRenderer(RagiumBlockEntityTypes.CREATIVE_TANK.get(), ::HTTankBlockEntityRenderer) } + + @JvmStatic + private fun registerTooltipAppenders(event: RegisterTooltipAppendersEvent) { + event.registerAppender( + TooltipLocation.HEAD + ) { stack: ItemStack, _, _, _, _, builder: Consumer -> + if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender + val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender + val isCreative: Boolean = stack.`is`(RagiumTags.BlockItem.STORAGES_CREATIVE.item) + // Fluid Name + val resource: FluidResource = view.resource + when { + resource.isEmpty -> HTCommonTranslation.EMPTY.translateColored(ChatFormatting.RED) + + isCreative -> HTCommonTranslation.STORED.translateColored( + ChatFormatting.LIGHT_PURPLE, + resource.hoverName, + ChatFormatting.GRAY, + HTCommonTranslation.INFINITE + ) + + else -> HTCommonTranslation.STORED_MB.translateColored( + ChatFormatting.LIGHT_PURPLE, + resource.hoverName, + ChatFormatting.GRAY, + view.amount + ) + }.let(builder::accept) + // Tank Capacity + when (isCreative) { + true -> HTCommonTranslation.CAPACITY.translateColored( + ChatFormatting.BLUE, + ChatFormatting.GRAY, + HTCommonTranslation.INFINITE + ) + + false -> HTCommonTranslation.CAPACITY_MB.translateColored( + ChatFormatting.BLUE, + ChatFormatting.GRAY, + view.currentCapacity + ) + }.let(builder::accept) + } + event.registerAppender( + TooltipLocation.HEAD + ) { stack: ItemStack, _, _, _, _, builder: Consumer -> + HTClientChemicalHelper.addToTooltip(stack, builder::accept) + } + } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt index 5b18ca060..83d507b37 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt @@ -1,7 +1,9 @@ package hiiragi283.ragium.client.event import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.text.Text import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper import hiiragi283.ragium.common.fluid.RagiumFluids import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.SubscribeEvent @@ -14,8 +16,12 @@ data object RagiumClientEventHandler { @SubscribeEvent fun onFluidTooltip(event: FluidTooltipEvent) { val stack: FluidStack = event.fluidStack + val appender: (Text) -> Unit = event.toolTip::add + // Potion Fluid if (RagiumFluids.POTION.isOf(stack)) { - HTPotionHelper.getContents(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack) + HTPotionHelper.getContents(stack).addToTooltip(event.context, appender, event.flags, stack) } + // Chemical Tooltip + HTClientChemicalHelper.addToTooltip(stack, appender) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 70afb0f4e..5802091af 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -4,6 +4,8 @@ import hiiragi283.lib.data.lang.HTLangProvider import hiiragi283.lib.data.lang.HTLangTypes import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation @@ -146,12 +148,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumMobEffects.FROSTBITE, "Frostbite") add(RagiumMobEffects.CHEMICAL_BURN, "Chemical Burn") - // Ore Slurry - addFromKey(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") - addFromKey(RagiumOreSlurryData.IRON, "Iron Ore Slurry") - addFromKey(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") - addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") - // Potion addPotion(RagiumPotions.FROSTBITE, "Frostbite") addPotion(RagiumPotions.CHEMICAL_BURN, "Chemical Burn") @@ -223,5 +219,53 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_RATE, "Energy Rate") add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"Scanned Item: %1$s") + + addDataTranslations() + } + + private fun addDataTranslations() { + // Chemical + addFromKey(RagiumChemicals.HYDROGEN, "Hydrogen") + + addFromKey(RagiumChemicals.CARBON, "Carbon") + addFromKey(RagiumChemicals.DIAMOND, "Diamond") + addFromKey(RagiumChemicals.NITROGEN, "Nitrogen") + addFromKey(RagiumChemicals.OXYGEN, "Oxygen") + + addFromKey(RagiumChemicals.ALUMINUM, "Aluminum") + addFromKey(RagiumChemicals.SILICON, "Silicon") + addFromKey(RagiumChemicals.SULFUR, "Sulfur") + addFromKey(RagiumChemicals.CHLORINE, "Chlorine") + + addFromKey(RagiumChemicals.IRON, "Iron") + addFromKey(RagiumChemicals.COPPER, "Copper") + + addFromKey(RagiumChemicals.HYDROXIDE, "Hydroxide") + addFromKey(RagiumChemicals.WATER, "Water") + // Element + addFromKey(RagiumElements.HYDROGEN, "Hydrogen") + + addFromKey(RagiumElements.CARBON, "Carbon") + addFromKey(RagiumElements.NITROGEN, "Nitrogen") + addFromKey(RagiumElements.OXYGEN, "Oxygen") + addFromKey(RagiumElements.FLUORINE, "Fluorine") + + addFromKey(RagiumElements.SODIUM, "Sodium") + addFromKey(RagiumElements.ALUMINUM, "Aluminum") + addFromKey(RagiumElements.SILICON, "Silicon") + addFromKey(RagiumElements.SULFUR, "Sulfur") + addFromKey(RagiumElements.CHLORINE, "Chlorine") + + addFromKey(RagiumElements.POTASSIUM, "Potassium") + addFromKey(RagiumElements.CALCIUM, "Calcium") + addFromKey(RagiumElements.IRON, "Iron") + addFromKey(RagiumElements.COPPER, "Copper") + + addFromKey(RagiumElements.GOLD, "Gold") + // Ore Slurry + addFromKey(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") + addFromKey(RagiumOreSlurryData.IRON, "Iron Ore Slurry") + addFromKey(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") + addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 258880ab3..493eebce8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -4,6 +4,8 @@ import hiiragi283.lib.data.lang.HTLangProvider import hiiragi283.lib.data.lang.HTLangTypes import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.chemical.RagiumChemicals +import hiiragi283.ragium.api.data.element.RagiumElements import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation @@ -142,12 +144,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumMobEffects.FROSTBITE, "凍傷") add(RagiumMobEffects.CHEMICAL_BURN, "化学火傷") - // Ore Slurry - addFromKey(RagiumOreSlurryData.COPPER, "銅の鉱石泥") - addFromKey(RagiumOreSlurryData.IRON, "鉄の鉱石泥") - addFromKey(RagiumOreSlurryData.GOLD, "金の鉱石泥") - addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") - // Potion addPotion(RagiumPotions.FROSTBITE, "凍傷") addPotion(RagiumPotions.CHEMICAL_BURN, "化学火傷") @@ -219,5 +215,53 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_RATE, "エネルギー使用速度") add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"スキャン済み: %1$s") + + addDataTranslations() + } + + private fun addDataTranslations() { + // Chemical + addFromKey(RagiumChemicals.HYDROGEN, "水素") + + addFromKey(RagiumChemicals.CARBON, "炭素") + addFromKey(RagiumChemicals.DIAMOND, "ダイヤモンド") + addFromKey(RagiumChemicals.NITROGEN, "窒素") + addFromKey(RagiumChemicals.OXYGEN, "酸素") + + addFromKey(RagiumChemicals.ALUMINUM, "アルミニウム") + addFromKey(RagiumChemicals.SILICON, "ケイ素") + addFromKey(RagiumChemicals.SULFUR, "硫黄") + addFromKey(RagiumChemicals.CHLORINE, "塩素") + + addFromKey(RagiumChemicals.IRON, "鉄") + addFromKey(RagiumChemicals.COPPER, "銅") + + addFromKey(RagiumChemicals.HYDROXIDE, "水酸基") + addFromKey(RagiumChemicals.WATER, "水") + // Element + addFromKey(RagiumElements.HYDROGEN, "水素") + + addFromKey(RagiumElements.CARBON, "炭素") + addFromKey(RagiumElements.NITROGEN, "窒素") + addFromKey(RagiumElements.OXYGEN, "酸素") + addFromKey(RagiumElements.FLUORINE, "フッ素") + + addFromKey(RagiumElements.SODIUM, "ナトリウム") + addFromKey(RagiumElements.ALUMINUM, "アルミニウム") + addFromKey(RagiumElements.SILICON, "ケイ素") + addFromKey(RagiumElements.SULFUR, "硫黄") + addFromKey(RagiumElements.CHLORINE, "塩素") + + addFromKey(RagiumElements.POTASSIUM, "カリウム") + addFromKey(RagiumElements.CALCIUM, "カルシウム") + addFromKey(RagiumElements.IRON, "鉄") + addFromKey(RagiumElements.COPPER, "銅") + + addFromKey(RagiumElements.GOLD, "金") + // Ore Slurry + addFromKey(RagiumOreSlurryData.COPPER, "銅の鉱石泥") + addFromKey(RagiumOreSlurryData.IRON, "鉄の鉱石泥") + addFromKey(RagiumOreSlurryData.GOLD, "金の鉱石泥") + addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") } } diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index d0dee0cd1..d70a25938 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -315,6 +315,34 @@ "item.ragium.wood_gear": "Wood Gear", "item.ragium.wood_tar_bucket": "Wood Tar Bucket", "item.ragium.yellow_dye_bucket": "Yellow Dye Bucket", + "ragium.chemical.ragium.aluminum": "Aluminum", + "ragium.chemical.ragium.carbon": "Carbon", + "ragium.chemical.ragium.chlorine": "Chlorine", + "ragium.chemical.ragium.copper": "Copper", + "ragium.chemical.ragium.diamond": "Diamond", + "ragium.chemical.ragium.hydrogen": "Hydrogen", + "ragium.chemical.ragium.hydroxide": "Hydroxide", + "ragium.chemical.ragium.iron": "Iron", + "ragium.chemical.ragium.nitrogen": "Nitrogen", + "ragium.chemical.ragium.oxygen": "Oxygen", + "ragium.chemical.ragium.silicon": "Silicon", + "ragium.chemical.ragium.sulfur": "Sulfur", + "ragium.chemical.ragium.water": "Water", + "ragium.element.ragium.aluminum": "Aluminum", + "ragium.element.ragium.calcium": "Calcium", + "ragium.element.ragium.carbon": "Carbon", + "ragium.element.ragium.chlorine": "Chlorine", + "ragium.element.ragium.copper": "Copper", + "ragium.element.ragium.fluorine": "Fluorine", + "ragium.element.ragium.gold": "Gold", + "ragium.element.ragium.hydrogen": "Hydrogen", + "ragium.element.ragium.iron": "Iron", + "ragium.element.ragium.nitrogen": "Nitrogen", + "ragium.element.ragium.oxygen": "Oxygen", + "ragium.element.ragium.potassium": "Potassium", + "ragium.element.ragium.silicon": "Silicon", + "ragium.element.ragium.sodium": "Sodium", + "ragium.element.ragium.sulfur": "Sulfur", "ragium.ore_slurry_data.ragium.copper": "Copper Ore Slurry", "ragium.ore_slurry_data.ragium.gold": "Gold Ore Slurry", "ragium.ore_slurry_data.ragium.iron": "Iron Ore Slurry", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index fae291e3f..b8f9c1ce9 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -315,6 +315,34 @@ "item.ragium.wood_gear": "木の歯車", "item.ragium.wood_tar_bucket": "木タール入りバケツ", "item.ragium.yellow_dye_bucket": "黄色の染料入りバケツ", + "ragium.chemical.ragium.aluminum": "アルミニウム", + "ragium.chemical.ragium.carbon": "炭素", + "ragium.chemical.ragium.chlorine": "塩素", + "ragium.chemical.ragium.copper": "銅", + "ragium.chemical.ragium.diamond": "ダイヤモンド", + "ragium.chemical.ragium.hydrogen": "水素", + "ragium.chemical.ragium.hydroxide": "水酸基", + "ragium.chemical.ragium.iron": "鉄", + "ragium.chemical.ragium.nitrogen": "窒素", + "ragium.chemical.ragium.oxygen": "酸素", + "ragium.chemical.ragium.silicon": "ケイ素", + "ragium.chemical.ragium.sulfur": "硫黄", + "ragium.chemical.ragium.water": "水", + "ragium.element.ragium.aluminum": "アルミニウム", + "ragium.element.ragium.calcium": "カルシウム", + "ragium.element.ragium.carbon": "炭素", + "ragium.element.ragium.chlorine": "塩素", + "ragium.element.ragium.copper": "銅", + "ragium.element.ragium.fluorine": "フッ素", + "ragium.element.ragium.gold": "金", + "ragium.element.ragium.hydrogen": "水素", + "ragium.element.ragium.iron": "鉄", + "ragium.element.ragium.nitrogen": "窒素", + "ragium.element.ragium.oxygen": "酸素", + "ragium.element.ragium.potassium": "カリウム", + "ragium.element.ragium.silicon": "ケイ素", + "ragium.element.ragium.sodium": "ナトリウム", + "ragium.element.ragium.sulfur": "硫黄", "ragium.ore_slurry_data.ragium.copper": "銅の鉱石泥", "ragium.ore_slurry_data.ragium.gold": "金の鉱石泥", "ragium.ore_slurry_data.ragium.iron": "鉄の鉱石泥", diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json new file mode 100644 index 000000000..391e33091 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_chloride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen" + }, + { + "element": "ragium:chlorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json new file mode 100644 index 000000000..8a2706b7f --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydrogen_fluoride.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen" + }, + { + "element": "ragium:fluorine" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json b/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json new file mode 100644 index 000000000..4e59fd338 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/hydroxide.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:oxygen" + }, + { + "element": "ragium:hydrogen" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json b/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json new file mode 100644 index 000000000..4e67d6505 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/nitric_acid.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:nitrogen" + }, + { + "chemical": "ragium:nitrate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json b/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json new file mode 100644 index 000000000..dc22add70 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sodium_hydroxide.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium" + }, + { + "chemical": "ragium:hydroxide" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json new file mode 100644 index 000000000..da9b70273 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur_dioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 2 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json b/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json new file mode 100644 index 000000000..a11f2ca7a --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfur_trioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sulfur" + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json b/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json new file mode 100644 index 000000000..b3ccfc19e --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sulfuric_acid.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen", + "weight": 2 + }, + { + "chemical": "ragium:sulfate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/water.json b/src/generated/resources/data/ragium/ragium/chemical/water.json new file mode 100644 index 000000000..eb92294e2 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/water.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:hydrogen", + "weight": 2 + }, + { + "element": "ragium:oxygen" + } + ] +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt index 58cfcb7eb..2ee2134bd 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTChemical.kt @@ -4,6 +4,9 @@ import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.text.HTHasText +import hiiragi283.lib.text.MutableText +import hiiragi283.lib.text.toText import hiiragi283.ragium.api.RagiumRegistries import net.minecraft.core.Holder import net.minecraft.network.RegistryFriendlyByteBuf @@ -15,7 +18,7 @@ import net.minecraft.network.codec.StreamCodec * @author Hiiragi Tsubasa * @since 26.1.8 */ -interface HTChemical { +interface HTChemical : HTHasText { companion object { @JvmField val DISPATCH_CODEC: Codec = @@ -59,6 +62,8 @@ interface HTChemical { fun getChemicalFormula(): String + override fun getText(): MutableText = this.getChemicalFormula().toText() + @JvmRecord data class Type(val codec: MapCodec, val streamCodec: StreamCodec) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index e5cc52eb8..183e4862f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -60,12 +60,22 @@ data object RagiumChemicals { // Compounds // + // 1st Period + @JvmField + val HYDROXIDE: ResourceKey = create("hydroxide") + + @JvmField + val WATER: ResourceKey = create("water") + // 2nd Period @JvmField val NITRATE: ResourceKey = create("nitrate") @JvmField - val POTASSIUM_NITRATE: ResourceKey = create("potassium_nitrate") + val NITRIC_ACID: ResourceKey = create("nitric_acid") + + @JvmField + val HYDROGEN_FLUORIDE: ResourceKey = create("hydrogen_fluoride") @JvmField val FLUORITE: ResourceKey = create("fluorite") @@ -74,6 +84,9 @@ data object RagiumChemicals { val CRYOLITE: ResourceKey = create("cryolite") // 3rd Period + @JvmField + val SODIUM_HYDROXIDE: ResourceKey = create("sodium_hydroxide") + @JvmField val SODIUM_CHLORIDE: ResourceKey = create("sodium_chloride") @@ -83,9 +96,25 @@ data object RagiumChemicals { @JvmField val SILICON_DIOXIDE: ResourceKey = create("silicon_dioxide") + @JvmField + val SULFUR_DIOXIDE: ResourceKey = create("sulfur_dioxide") + + @JvmField + val SULFUR_TRIOXIDE: ResourceKey = create("sulfur_trioxide") + @JvmField val SULFATE: ResourceKey = create("sulfate") + @JvmField + val SULFURIC_ACID: ResourceKey = create("sulfuric_acid") + + @JvmField + val HYDROGEN_CHLORIDE: ResourceKey = create("hydrogen_chloride") + + // 4th Period + @JvmField + val POTASSIUM_NITRATE: ResourceKey = create("potassium_nitrate") + // Mixtures // @JvmStatic @@ -114,6 +143,21 @@ data object RagiumChemicals { context.register(GOLD, HTSimpleChemical(getter.getOrThrow(RagiumElements.GOLD), 1)) // Compounds + context.register( + HYDROXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.OXYGEN, 1) + add(RagiumElements.HYDROGEN, 1) + } + ) + context.register( + WATER, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 2) + add(RagiumElements.OXYGEN, 1) + } + ) + context.register( NITRATE, HTCompoundChemical.build(context) { @@ -122,12 +166,19 @@ data object RagiumChemicals { } ) context.register( - POTASSIUM_NITRATE, + NITRIC_ACID, HTCompoundChemical.build(context) { - add(RagiumElements.POTASSIUM, 1) + add(RagiumElements.NITROGEN, 1) add(NITRATE, 1) } ) + context.register( + HYDROGEN_FLUORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 1) + add(RagiumElements.FLUORINE, 1) + } + ) context.register( FLUORITE, HTCompoundChemical.build(context) { @@ -144,6 +195,13 @@ data object RagiumChemicals { } ) + context.register( + SODIUM_HYDROXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 1) + add(HYDROXIDE, 1) + } + ) context.register( SODIUM_CHLORIDE, HTCompoundChemical.build(context) { @@ -165,6 +223,20 @@ data object RagiumChemicals { add(RagiumElements.OXYGEN, 2) } ) + context.register( + SULFUR_DIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 2) + } + ) + context.register( + SULFUR_TRIOXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.SULFUR, 1) + add(RagiumElements.OXYGEN, 3) + } + ) context.register( SULFATE, HTCompoundChemical.build(context) { @@ -172,5 +244,27 @@ data object RagiumChemicals { add(RagiumElements.OXYGEN, 4) } ) + context.register( + SULFURIC_ACID, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 2) + add(SULFATE, 1) + } + ) + context.register( + HYDROGEN_CHLORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.HYDROGEN, 1) + add(RagiumElements.CHLORINE, 1) + } + ) + + context.register( + POTASSIUM_NITRATE, + HTCompoundChemical.build(context) { + add(RagiumElements.POTASSIUM, 1) + add(NITRATE, 1) + } + ) } } diff --git a/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt b/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt new file mode 100644 index 000000000..8aefbfb37 --- /dev/null +++ b/src/libClient/kotlin/hiiragi283/ragium/api/data/chemical/HTClientChemicalHelper.kt @@ -0,0 +1,25 @@ +package hiiragi283.ragium.api.data.chemical + +import hiiragi283.lib.resource.toLanguageKey +import hiiragi283.lib.text.Text +import hiiragi283.lib.text.translatableText +import hiiragi283.ragium.api.data.RagiumDataComponents +import net.minecraft.ChatFormatting +import net.minecraft.client.Minecraft +import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponentGetter + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +data object HTClientChemicalHelper { + @JvmStatic + fun addToTooltip(getter: DataComponentGetter, acceptor: (Text) -> Unit) { + val holder: Holder = getter.get(RagiumDataComponents.CHEMICAL) ?: return + when { + Minecraft.getInstance().hasShiftDown() -> holder.key?.toLanguageKey()?.let(::translatableText) + else -> holder.value().getText() + }?.withStyle(ChatFormatting.YELLOW)?.let(acceptor) + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index fac9ba633..eb5447ac2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -10,12 +10,17 @@ import hiiragi283.lib.recipe.RecipeKey import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.lookup.fromRecipeType import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.createKey import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.lib.registry.getOrNull import hiiragi283.lib.resource.modifyPath +import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.util.identity import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.api.recipe.RagiumRecipeTypes @@ -27,9 +32,12 @@ import hiiragi283.ragium.common.recipe.RTPotionBottleFillingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.core.Holder import net.minecraft.core.HolderGetter +import net.minecraft.core.HolderLookup import net.minecraft.core.HolderSet import net.minecraft.core.RegistryAccess +import net.minecraft.core.component.DataComponentMap import net.minecraft.core.registries.BuiltInRegistries +import net.minecraft.core.registries.Registries import net.minecraft.resources.ResourceKey import net.minecraft.world.item.DyeColor import net.minecraft.world.item.alchemy.Potion @@ -50,6 +58,7 @@ import net.neoforged.neoforge.registries.datamaps.builtin.Waxable internal data object RagiumCommon { fun initialize(event: FMLCommonSetupEvent) { event.enqueueWork(::initFluidInteractions) + event.enqueueWork(::initFluidComponents) event.enqueueWork(::initRecipeLookups) } @@ -71,6 +80,40 @@ internal data object RagiumCommon { } } + private fun initFluidComponents() { + fun setChemical(content: HTFluidContent, key: ResourceKey) { + BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.add( + content.keyOrThrow + ) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(RagiumDataComponents.CHEMICAL, provider.getOrThrow(key)) + } + } + + BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.add( + Registries.FLUID.createKey(vanillaId("water")) + ) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(RagiumDataComponents.CHEMICAL, provider.getOrThrow(RagiumChemicals.WATER)) + } + + setChemical(RagiumFluids.MOLTEN_GLASS, RagiumChemicals.SILICON_DIOXIDE) + + setChemical(RagiumFluids.HYDROGEN, RagiumChemicals.HYDROGEN) + setChemical(RagiumFluids.OXYGEN, RagiumChemicals.OXYGEN) + setChemical(RagiumFluids.CHLORINE, RagiumChemicals.CHLORINE) + + setChemical(RagiumFluids.NITRIC_ACID, RagiumChemicals.NITRIC_ACID) + setChemical(RagiumFluids.HYDROGEN_FLUORIDE, RagiumChemicals.HYDROGEN_FLUORIDE) + setChemical(RagiumFluids.HYDROFLUORIC_ACID, RagiumChemicals.HYDROGEN_FLUORIDE) + + setChemical(RagiumFluids.NAOH_SOLUTION, RagiumChemicals.SODIUM_HYDROXIDE) + setChemical(RagiumFluids.ALUMINA_SOLUTION, RagiumChemicals.ALUMINA) + setChemical(RagiumFluids.SULFUR_DIOXIDE, RagiumChemicals.SULFUR_DIOXIDE) + setChemical(RagiumFluids.SULFUR_TRIOXIDE, RagiumChemicals.SULFUR_TRIOXIDE) + setChemical(RagiumFluids.SULFURIC_ACID, RagiumChemicals.SULFURIC_ACID) + setChemical(RagiumFluids.HYDROGEN_CHLORIDE, RagiumChemicals.HYDROGEN_CHLORIDE) + setChemical(RagiumFluids.HYDROCHLORIC_ACID, RagiumChemicals.HYDROGEN_CHLORIDE) + } + private fun initRecipeLookups() { // from recipe types RagiumRecipeLookups.ASSEMBLING.fromRecipeType(RagiumRecipeTypes.ASSEMBLING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 74667d001..ca456043a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -9,22 +9,15 @@ import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.registry.HTDeferredItemRegister import hiiragi283.lib.registry.HTSimpleDeferredItem -import hiiragi283.lib.text.HTCommonTranslation -import hiiragi283.lib.text.Text -import hiiragi283.lib.text.toText -import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents -import hiiragi283.ragium.api.data.chemical.HTChemical import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType -import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.component.RagiumToolMaterials -import net.minecraft.ChatFormatting import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponentMap @@ -32,18 +25,13 @@ import net.minecraft.core.component.DataComponentType import net.minecraft.resources.ResourceKey import net.minecraft.world.item.HoneycombItem import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.item.Rarity import net.minecraft.world.level.ItemLike import net.neoforged.bus.api.IEventBus import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent -import net.neoforged.neoforge.common.tooltip.TooltipLocation import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent -import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent import net.neoforged.neoforge.transfer.access.ItemAccess -import net.neoforged.neoforge.transfer.fluid.FluidResource -import java.util.function.Consumer data object RagiumItems { @JvmField @@ -56,7 +44,6 @@ data object RagiumItems { REGISTER.addAlias("steel_nugget", "sooty_iron_nugget") REGISTER.addAlias("coal_coke_dust", "carbon_dust") - eventBus.addListener(::registerTooltipAppenders) eventBus.addListener(::registerCapabilities) eventBus.addListener(::modifyDefaultComponents) @@ -247,56 +234,6 @@ data object RagiumItems { // Events // - @JvmStatic - private fun registerTooltipAppenders(event: RegisterTooltipAppendersEvent) { - event.registerAppender( - TooltipLocation.HEAD - ) { stack: ItemStack, _, _, _, _, builder: Consumer -> - if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender - val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender - val isCreative: Boolean = stack.`is`(RagiumTags.BlockItem.STORAGES_CREATIVE.item) - // Fluid Name - val resource: FluidResource = view.resource - when { - resource.isEmpty -> HTCommonTranslation.EMPTY.translateColored(ChatFormatting.RED) - - isCreative -> HTCommonTranslation.STORED.translateColored( - ChatFormatting.LIGHT_PURPLE, - resource.hoverName, - ChatFormatting.GRAY, - HTCommonTranslation.INFINITE - ) - - else -> HTCommonTranslation.STORED_MB.translateColored( - ChatFormatting.LIGHT_PURPLE, - resource.hoverName, - ChatFormatting.GRAY, - view.amount - ) - }.let(builder::accept) - // Tank Capacity - when (isCreative) { - true -> HTCommonTranslation.CAPACITY.translateColored( - ChatFormatting.BLUE, - ChatFormatting.GRAY, - HTCommonTranslation.INFINITE - ) - - false -> HTCommonTranslation.CAPACITY_MB.translateColored( - ChatFormatting.BLUE, - ChatFormatting.GRAY, - view.currentCapacity - ) - }.let(builder::accept) - } - event.registerAppender( - TooltipLocation.HEAD - ) { stack: ItemStack, _, _, _, _, builder: Consumer -> - val chemical: Holder = stack.get(RagiumDataComponents.CHEMICAL) ?: return@registerAppender - builder.accept(chemical.value().getChemicalFormula().toText().withStyle(ChatFormatting.YELLOW)) - } - } - @JvmStatic private fun registerCapabilities(event: RegisterCapabilitiesEvent) { // Fluid @@ -340,6 +277,15 @@ data object RagiumItems { setHolder(Items.GOLD_INGOT, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) setHolder(Items.GOLD_NUGGET, RagiumDataComponents.CHEMICAL, RagiumChemicals.GOLD) + setHolder(Items.SNOWBALL, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.SNOW_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.PACKED_ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + setHolder(Items.BLUE_ICE, RagiumDataComponents.CHEMICAL, RagiumChemicals.WATER) + + setHolder(Items.AMETHYST_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + setHolder(Items.AMETHYST_SHARD, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + setHolder(Items.QUARTZ_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) setHolder(Items.QUARTZ, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) // Ore Slurry From c0e8e3dd378cd5f5156d780388d2ee21e26ee38b Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 15:37:55 +0900 Subject: [PATCH 04/38] =?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=8CFluid=20Output=20B?= =?UTF-8?q?us=20/=20=E6=B6=B2=E4=BD=93=E6=90=AC=E5=87=BA=E3=83=90=E3=82=B9?= =?UTF-8?q?=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0=20feat:=20Electrolyzer=20?= =?UTF-8?q?=E3=81=AB=E6=A9=9F=E8=83=BD=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 + .../data/loot/RagiumBlockLootTableProvider.kt | 8 +- .../ragium/data/model/RagiumModelProvider.kt | 3 + .../recipe/RagiumVanillaRecipeProvider.kt | 7 + .../data/tag/RagiumBlockTagsProvider.kt | 2 + .../ragium/data/tag/RagiumItemTagsProvider.kt | 1 + .../ragium/blockstates/fluid_output_bus.json | 7 + .../assets/ragium/items/fluid_output_bus.json | 6 + .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/block/fluid_output_bus.json | 8 + .../tags/block/mineable/pickaxe.json | 1 + .../loot_table/blocks/fluid_output_bus.json | 32 ++++ .../ragium/recipe/shaped/electrolyzer.json | 18 ++ .../recipe/shapeless/fluid_output_bus.json | 11 ++ .../ragium/tags/item/show_fluid_tooltips.json | 1 + .../lib/capability/HTMultiCapability.kt | 4 +- .../lib/recipe/handler/HTOutputSlot.kt | 9 +- .../lib/transfer/ExtendedResourceHandler.kt | 22 +++ .../lib/transfer/HTResourceHandler.kt | 23 ++- .../lib/transfer/fluid/HTBasicFluidTank.kt | 10 +- .../fluid/HTItemAccessFluidHandler.kt | 86 +++++++++ .../kotlin/hiiragi283/lib/util/HTDelegates.kt | 25 +++ .../api/recipe/RTElectrolyzingRecipe.kt | 7 +- .../ragium/common/block/RagiumBlocks.kt | 27 ++- .../block/entity/HTBaseMachineBlockEntity.kt | 4 + .../block/entity/RagiumBlockEntityTypes.kt | 15 ++ .../block/entity/bus/HTFluidBusBlock.kt | 36 ++++ .../machine/HTElectrolyzerBlockEntity.kt | 177 ++++++++++++++++++ .../base/HTItemAndFluidToFluidBlockEntity.kt | 12 +- .../base/HTItemAndFluidToItemBlockEntity.kt | 12 +- .../base/HTItemToDoubleItemBlockEntity.kt | 2 +- .../storage/HTCreativeTankBlockEntity.kt | 9 +- .../storage/HTFluidOutputBusBlockEntity.kt | 43 +++++ .../block/entity/storage/HTTankBlockEntity.kt | 9 +- .../storage/base/HTBaseTankBlockEntity.kt | 17 +- .../common/block/storage/HTTankBlock.kt | 31 +-- .../transfer/fluid/HTVariableFluidTank.kt | 10 +- 39 files changed, 606 insertions(+), 95 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json create mode 100644 src/generated/resources/assets/ragium/items/fluid_output_bus.json create mode 100644 src/generated/resources/assets/ragium/models/block/fluid_output_bus.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json create mode 100644 src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json create mode 100644 src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 5802091af..2d1b527ef 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -75,6 +75,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.ENCHANTER, "Enchanter") + add(RagiumBlocks.FLUID_OUTPUT_BUS, "Fluid Output Bus") + add(RagiumBlocks.TANK, "Variable Tank") add(RagiumBlocks.VOID_TANK, "Void Tank") add(RagiumBlocks.CREATIVE_BATTERY, "Creative Battery") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 493eebce8..1ac6ceddc 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -71,6 +71,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.ENCHANTER, "エンチャンター") + add(RagiumBlocks.FLUID_OUTPUT_BUS, "液体搬出バス") + add(RagiumBlocks.TANK, "可変タンク") add(RagiumBlocks.VOID_TANK, "廃棄タンク") add(RagiumBlocks.CREATIVE_BATTERY, "クリエイティブ用バッテリー") diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index 684f271ff..866a0204d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt @@ -43,8 +43,12 @@ class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : add(machine, ::copyComponent) } // Storage - for (tank: HTSimpleDeferredBlockAndItem in listOf(RagiumBlocks.TANK, RagiumBlocks.CREATIVE_TANK)) { - add(tank) { block: Block -> copyComponent(block) { include(RagiumDataComponents.FLUID) } } + listOf( + RagiumBlocks.FLUID_OUTPUT_BUS, + RagiumBlocks.TANK, + RagiumBlocks.CREATIVE_TANK + ).forEach { blockItem: HTSimpleDeferredBlockAndItem -> + add(blockItem) { block: Block -> copyComponent(block) { include(RagiumDataComponents.FLUID) } } } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 450da341d..b2f72d3fe 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -23,6 +23,7 @@ import net.minecraft.client.data.models.blockstates.PropertyDispatch import net.minecraft.client.data.models.model.ModelTemplates import net.minecraft.client.data.models.model.TextureMapping import net.minecraft.client.data.models.model.TextureSlot +import net.minecraft.client.data.models.model.TexturedModel import net.minecraft.client.resources.model.sprite.Material import net.minecraft.data.PackOutput import net.minecraft.resources.Identifier @@ -125,6 +126,8 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP ) ) } + // Bus + generators.createTrivialBlock(RagiumBlocks.FLUID_OUTPUT_BUS.getOrThrow(), TexturedModel.CUBE_TOP_BOTTOM) // Storage generators.createTrivialBlock(RagiumBlocks.TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) generators.createTrivialBlock(RagiumBlocks.VOID_TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 08d6b9fbc..869bfc41e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -282,6 +282,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut heat(RagiumBlocks.SMELTER) { items { +Items.FURNACE } } // Chemical chemical(RagiumBlocks.CHEMICAL_BATH) { items { +Items.CAULDRON } } + chemical(RagiumBlocks.ELECTROLYZER) { +holderSet(ItemTags.LIGHTNING_RODS) } chemical(RagiumBlocks.MIXER) { +holderSet(Tags.Items.BUCKETS_EMPTY) } // Bio bio(RagiumBlocks.BREWERY) { items { +Items.BREWING_STAND } } @@ -291,6 +292,12 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Arcane arcane(RagiumBlocks.ENCHANTER) { items { +Items.ENCHANTING_TABLE } } + // Bus + VanillaRecipeBuilders.shapeless { + ingredient { items { +RagiumBlocks.MACHINE_CASING } } + ingredient { items { +RagiumBlocks.TANK } } + result { +RagiumBlocks.FLUID_OUTPUT_BUS } + }.save(exporter) // Decoration VanillaRecipeBuilders.shaped { +"ABA" diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index a458c40f2..b3a767364 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -37,6 +37,8 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yield(RagiumBlocks.MACHINE_CASING) yieldAll(RagiumBlocks.MACHINE_CASINGS.values) + yield(RagiumBlocks.FLUID_OUTPUT_BUS) + yield(RagiumBlocks.TANK) yield(RagiumBlocks.VOID_TANK) yield(RagiumBlocks.CREATIVE_BATTERY) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 42c47d2e5..23f971ba4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -83,6 +83,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) builder(RagiumTags.Items.SHOW_FLUID_TOOLTIPS) + .add(RagiumBlocks.FLUID_OUTPUT_BUS) .add(RagiumBlocks.TANK) .add(RagiumBlocks.VOID_TANK) .add(RagiumBlocks.CREATIVE_TANK) diff --git a/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json b/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json new file mode 100644 index 000000000..ffc971ded --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/fluid_output_bus.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/fluid_output_bus" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/fluid_output_bus.json b/src/generated/resources/assets/ragium/items/fluid_output_bus.json new file mode 100644 index 000000000..ff3f8e7a2 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/fluid_output_bus.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/fluid_output_bus" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index d70a25938..916429d5a 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -54,6 +54,7 @@ "block.ragium.electrolyzer": "Electrolyzer", "block.ragium.electronics_machine_casing": "Machine Casing (Electronics)", "block.ragium.enchanter": "Enchanter", + "block.ragium.fluid_output_bus": "Fluid Output Bus", "block.ragium.fluorite_block": "Block of Fluorite", "block.ragium.fluorite_slab": "Fluorite Slab", "block.ragium.fluorite_stairs": "Fluorite Stairs", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index b8f9c1ce9..c2e43c512 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -54,6 +54,7 @@ "block.ragium.electrolyzer": "電解機", "block.ragium.electronics_machine_casing": "機械筐体 (電子)", "block.ragium.enchanter": "エンチャンター", + "block.ragium.fluid_output_bus": "液体搬出バス", "block.ragium.fluorite_block": "蛍石ブロック", "block.ragium.fluorite_slab": "蛍石のハーフブロック", "block.ragium.fluorite_stairs": "蛍石の階段", diff --git a/src/generated/resources/assets/ragium/models/block/fluid_output_bus.json b/src/generated/resources/assets/ragium/models/block/fluid_output_bus.json new file mode 100644 index 000000000..bd83ffe6c --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluid_output_bus.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "ragium:block/fluid_output_bus_bottom", + "side": "ragium:block/fluid_output_bus_side", + "top": "ragium:block/fluid_output_bus_top" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index 40996203d..495774f84 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -26,6 +26,7 @@ "ragium:electrolyzer", "ragium:electronics_machine_casing", "ragium:enchanter", + "ragium:fluid_output_bus", "ragium:fluorite_block", "ragium:fluorite_slab", "ragium:fluorite_stairs", diff --git a/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json b/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json new file mode 100644 index 000000000..689aeadd8 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/fluid_output_bus.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name", + "ragium:owner_id", + "ragium:fluid" + ], + "source": "block_entity" + } + ], + "name": "ragium:fluid_output_bus" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/fluid_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json new file mode 100644 index 000000000..4a3c27412 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:nuggets/black_steel", + "B": "ragium:chemical_machine_parts", + "C": "#c:gears/gold", + "D": "#minecraft:lightning_rods" + }, + "pattern": [ + "ABA", + "BCB", + "ADA" + ], + "result": { + "id": "ragium:electrolyzer" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json b/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json new file mode 100644 index 000000000..fc3c8348e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/fluid_output_bus.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "ragium:machine_casing", + "ragium:tank" + ], + "result": { + "id": "ragium:fluid_output_bus" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json index 29217b0ff..a056d1d15 100644 --- a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json +++ b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json @@ -1,6 +1,7 @@ { "values": [ "ragium:creative_tank", + "ragium:fluid_output_bus", "ragium:tank", "ragium:void_tank" ] diff --git a/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt b/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt index 61d6e8679..ddf19ac3b 100644 --- a/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt +++ b/src/lib/kotlin/hiiragi283/lib/capability/HTMultiCapability.kt @@ -42,9 +42,7 @@ interface HTMultiCapability { level: ServerLevel, pos: BlockPos, side: Direction?, - validator: BooleanSupplier = BooleanSupplier { - true - }, + validator: BooleanSupplier = BooleanSupplier { true }, listener: Runnable = Runnables.doNothing() ): BlockCapabilityCache = BlockCapabilityCache.create(block, level, pos, side, validator, listener) diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt b/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt index a9d29fa58..e5d723d18 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/handler/HTOutputSlot.kt @@ -40,13 +40,8 @@ interface HTOutputSlot { FULL; /** - * 出力の受け取りに失敗した場合は`true` + * 出力をすべて受け取れた場合は`true` */ - val noneTaken: Boolean get() = this == NONE - - /** - * 出力の受け取りに成功した場合は`true` - */ - val anyTaken: Boolean get() = !noneTaken + val fullOrNoneTaken: Boolean get() = this == NONE || this == FULL } } diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt new file mode 100644 index 000000000..e90060bc3 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/transfer/ExtendedResourceHandler.kt @@ -0,0 +1,22 @@ +package hiiragi283.lib.transfer + +import net.neoforged.neoforge.transfer.ResourceHandler +import net.neoforged.neoforge.transfer.resource.Resource +import net.neoforged.neoforge.transfer.transaction.TransactionContext + +/** + * Ragiumで使用される[ResourceHandler]の拡張インターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface ExtendedResourceHandler : ResourceHandler { + fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext, access: HTTransferAccess): Int + + override fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = + insert(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) + + fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext, access: HTTransferAccess): Int + + override fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = + extract(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) +} diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt index 2a68161b2..7c07b7a0b 100644 --- a/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt +++ b/src/lib/kotlin/hiiragi283/lib/transfer/HTResourceHandler.kt @@ -1,10 +1,9 @@ package hiiragi283.lib.transfer -import net.neoforged.neoforge.transfer.ResourceHandler import net.neoforged.neoforge.transfer.resource.Resource import net.neoforged.neoforge.transfer.transaction.TransactionContext -class HTResourceHandler(val slots: List>) : ResourceHandler { +class HTResourceHandler(val slots: List>) : ExtendedResourceHandler { fun getSlot(index: Int): HTResourceSlot = slots[index] override fun size(): Int = slots.size @@ -23,9 +22,19 @@ class HTResourceHandler(val slots: List>) : Reso override fun isValid(index: Int, resource: T): Boolean = getSlot(index).isValid(resource) - override fun insert(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = - getSlot(index).insert(resource, amount, transaction, HTTransferAccess.EXTERNAL) - - override fun extract(index: Int, resource: T, amount: Int, transaction: TransactionContext): Int = - getSlot(index).extract(resource, amount, transaction, HTTransferAccess.EXTERNAL) + override fun insert( + index: Int, + resource: T, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = getSlot(index).insert(resource, amount, transaction, access) + + override fun extract( + index: Int, + resource: T, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = getSlot(index).extract(resource, amount, transaction, access) } diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt index 0e49b5936..3b7276d93 100644 --- a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt +++ b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTBasicFluidTank.kt @@ -36,9 +36,13 @@ open class HTBasicFluidTank( listener: Runnable?, canInsert: Predicate = HTTransferPredicates.alwaysTrue(), filter: Predicate = canInsert - ): HTBasicFluidTank = create(capacity, listener, HTTransferPredicates.notExternal(), { resource, _ -> - canInsert.test(resource) - }, filter) + ): HTBasicFluidTank = create( + capacity, + listener, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) @JvmStatic fun output(capacity: Int, listener: Runnable?): HTBasicFluidTank = diff --git a/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt new file mode 100644 index 000000000..35e7e5d15 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/transfer/fluid/HTItemAccessFluidHandler.kt @@ -0,0 +1,86 @@ +package hiiragi283.lib.transfer.fluid + +import hiiragi283.lib.transfer.ExtendedResourceHandler +import hiiragi283.lib.transfer.HTTransferAccess +import hiiragi283.lib.transfer.HTTransferPredicates +import hiiragi283.ragium.api.data.RagiumDataComponents +import net.neoforged.neoforge.transfer.access.ItemAccess +import net.neoforged.neoforge.transfer.fluid.FluidResource +import net.neoforged.neoforge.transfer.fluid.ItemAccessFluidHandler +import net.neoforged.neoforge.transfer.transaction.TransactionContext +import java.util.function.BiPredicate +import java.util.function.Predicate + +/** + * Ragiumで使用される[ItemAccessFluidHandler]の拡張クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +class HTItemAccessFluidHandler( + itemAccess: ItemAccess, + capacity: Int, + private val canExtract: BiPredicate, + private val canInsert: BiPredicate, + private val filter: Predicate +) : ItemAccessFluidHandler(itemAccess, RagiumDataComponents.FLUID, capacity), + ExtendedResourceHandler { + companion object { + @JvmStatic + fun create( + itemAccess: ItemAccess, + capacity: Int, + canExtract: BiPredicate = HTTransferPredicates.alwaysTrueBi(), + canInsert: BiPredicate = HTTransferPredicates.alwaysTrueBi(), + filter: Predicate = HTTransferPredicates.alwaysTrue() + ): HTItemAccessFluidHandler = HTItemAccessFluidHandler(itemAccess, capacity, canExtract, canInsert, filter) + + @JvmStatic + fun input( + itemAccess: ItemAccess, + capacity: Int, + canInsert: Predicate = HTTransferPredicates.alwaysTrue(), + filter: Predicate = canInsert + ): HTItemAccessFluidHandler = create( + itemAccess, + capacity, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) + + @JvmStatic + fun output(itemAccess: ItemAccess, capacity: Int): HTItemAccessFluidHandler = + create(itemAccess, capacity, canInsert = HTTransferPredicates.internalOnly()) + } + + override fun insert( + index: Int, + resource: FluidResource, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = when { + canInsert.test(resource, access) -> super.insert(index, resource, amount, transaction) + else -> 0 + } + + override fun extract( + index: Int, + resource: FluidResource, + amount: Int, + transaction: TransactionContext, + access: HTTransferAccess + ): Int = when { + canExtract.test(resource, access) -> super.extract(index, resource, amount, transaction) + else -> 0 + } + + override fun isValid(index: Int, resource: FluidResource): Boolean = + super.isValid(index, resource) && filter.test(resource) + + override fun insert(index: Int, resource: FluidResource, amount: Int, transaction: TransactionContext): Int = + this.insert(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) + + override fun extract(index: Int, resource: FluidResource, amount: Int, transaction: TransactionContext): Int = + this.extract(index, resource, amount, transaction, HTTransferAccess.EXTERNAL) +} diff --git a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt index cdf75dd9e..e545fbdb0 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt @@ -63,4 +63,29 @@ data object HTDelegates { setter.accept(value) } } + + /** + * @since 26.1.8 + */ + fun memoizeNotNull(supplier: () -> T?): ReadWriteProperty = MemoizeNotNull(supplier) + + private class MemoizeNotNull(private val supplier: () -> T?) : ReadWriteProperty { + private var cachedValue: T? = null + + override fun getValue(thisRef: Any?, property: KProperty<*>): T? { + if (cachedValue != null) { + return cachedValue + } else { + val value: T? = supplier() + if (value != null) { + cachedValue = value + } + return value + } + } + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { + cachedValue = value + } + } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt index 9c2f74268..4fdd7020e 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt @@ -36,7 +36,7 @@ data class RTElectrolyzingRecipe( val results: Nel, override val progressData: HTProgressData ) : HTRecipePredicates.ItemAndFluid, - HTRecipeFactories.ItemAndFluid>, + HTRecipeFactories.ItemAndFluid, HTProgressRecipe.Simple, HTSerializableRecipe { companion object { @@ -81,7 +81,7 @@ data class RTElectrolyzingRecipe( fluidIngredient.getMatchingStack(second) ) - override fun apply(first: ItemInstance, second: FluidInstance): Triple = Triple( + override fun apply(first: ItemInstance, second: FluidInstance): ElectrolyzedResult = ElectrolyzedResult( results.head.create(), results.getOrNull(1).createOrEmpty(), results.getOrNull(2).createOrEmpty() @@ -90,4 +90,7 @@ data class RTElectrolyzingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ELECTROLYZING override fun getType(): HTRecipeType = RagiumRecipeTypes.ELECTROLYZING + + @JvmRecord + data class ElectrolyzedResult(val right: FluidStack, val left: FluidStack, val main: FluidStack) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 32a5e4163..38eca5719 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -15,6 +15,7 @@ import hiiragi283.lib.registry.HTDeferredBlockEntityType import hiiragi283.lib.registry.HTDeferredBlockRegister import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.ItemWithContextFactory +import hiiragi283.lib.transfer.fluid.HTItemAccessFluidHandler import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumConstants @@ -27,6 +28,7 @@ import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock import hiiragi283.ragium.common.block.storage.HTTankBlock import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import hiiragi283.ragium.common.item.block.HTCreativeTankBlockItem @@ -52,7 +54,6 @@ import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent import net.neoforged.neoforge.transfer.InfiniteResourceHandler import net.neoforged.neoforge.transfer.energy.InfiniteEnergyHandler import net.neoforged.neoforge.transfer.fluid.FluidResource -import net.neoforged.neoforge.transfer.fluid.ItemAccessFluidHandler data object RagiumBlocks { @JvmStatic @@ -289,7 +290,7 @@ data object RagiumBlocks { @JvmField val ELECTROLYZER: HTBasicDeferredBlockAndItem = - registerFakeMachine(RagiumConstants.ELECTROLYZER) + registerMachine(RagiumBlockEntityTypes.ELECTROLYZER) @JvmField val MIXER: HTBasicDeferredBlockAndItem = @@ -350,6 +351,14 @@ data object RagiumBlocks { } ) + // Bus // + + @JvmField + val FLUID_OUTPUT_BUS: HTBasicDeferredBlockAndItem = registerMachine( + RagiumBlockEntityTypes.FLUID_OUTPUT_BUS, + ::HTFluidBusBlock + ) + // Storage // @JvmField @@ -402,11 +411,15 @@ data object RagiumBlocks { event.registerItem( HTFluidCapabilities.item, { _, access -> - ItemAccessFluidHandler( - access, - RagiumDataComponents.FLUID, - RagiumConfig.SERVER.tankCapacity.asInt - ) + HTItemAccessFluidHandler.output(access, RagiumConfig.SERVER.tankCapacity.asInt) + }, + FLUID_OUTPUT_BUS + ) + + event.registerItem( + HTFluidCapabilities.item, + { _, access -> + HTItemAccessFluidHandler.create(access, RagiumConfig.SERVER.tankCapacity.asInt) }, TANK ) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt index aff07609d..2fb94841b 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTBaseMachineBlockEntity.kt @@ -7,8 +7,10 @@ import hiiragi283.lib.gui.widget.HTWidgetHolder import hiiragi283.lib.transfer.fluid.HTBasicFluidTank import hiiragi283.lib.transfer.item.HTBasicItemSlot import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.common.block.HTHorizontalEntityBlock import hiiragi283.ragium.common.block.HTMachineBlock import net.minecraft.core.BlockPos +import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState @@ -19,6 +21,8 @@ abstract class HTBaseMachineBlockEntity(type: BlockEntityType<*>, pos: BlockPos, HTBlockEntityWithMenu { protected fun getTankCapacity(): IntSupplier = RagiumConfig.SERVER.machine.tankCapacity + fun getFront(): Direction = this.blockState.getValue(HTHorizontalEntityBlock.FACING) + fun isActive(): Boolean = isActive(this.blockState) fun isActive(state: BlockState): Boolean = state.getOptionalValue(HTMachineBlock.IS_ACTIVE).orElseGet { false } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt index d354f3c0e..d5f311c60 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -19,6 +19,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTChemicalBathBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCompressorBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCrusherBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTCuttingMachineBlockEntity +import hiiragi283.ragium.common.block.entity.machine.HTElectrolyzerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTEnchanterBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTFreezerBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTMelterBlockEntity @@ -29,6 +30,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTProcessorBlockEntity import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeBatteryBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeTankBlockEntity +import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTTankBlockEntity import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import net.minecraft.core.Direction @@ -98,6 +100,10 @@ data object RagiumBlockEntityTypes { val CHEMICAL_BATH: HTDeferredBlockEntityType = registerTick(RagiumConstants.CHEMICAL_BATH, ::HTChemicalBathBlockEntity) + @JvmField + val ELECTROLYZER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.ELECTROLYZER, ::HTElectrolyzerBlockEntity) + @JvmField val MIXER: HTDeferredBlockEntityType = registerTick(RagiumConstants.MIXER, ::HTMixerBlockEntity) @@ -121,6 +127,12 @@ data object RagiumBlockEntityTypes { val ENCHANTER: HTDeferredBlockEntityType = registerTick(RagiumConstants.ENCHANTER, ::HTEnchanterBlockEntity) + // Bus // + + @JvmField + val FLUID_OUTPUT_BUS: HTDeferredBlockEntityType = + registerTick("fluid_output_bus", ::HTFluidOutputBusBlockEntity) + // Storage // @JvmField @@ -177,6 +189,7 @@ data object RagiumBlockEntityTypes { registerProcessor(SMELTER.get()) registerProcessor(CHEMICAL_BATH.get()) + registerProcessor(ELECTROLYZER.get()) registerProcessor(MIXER.get()) registerProcessor(BREWERY.get()) @@ -185,6 +198,8 @@ data object RagiumBlockEntityTypes { registerProcessor(PRECISION_ASSEMBLER.get()) registerProcessor(ENCHANTER.get()) + // Bus + registerBlockEntity(FLUID_OUTPUT_BUS.get()) // Storage registerBlockEntity(TANK.get()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt new file mode 100644 index 000000000..3345e3024 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt @@ -0,0 +1,36 @@ +package hiiragi283.ragium.common.block.entity.bus + +import hiiragi283.lib.registry.HTDeferredBlockEntityType +import hiiragi283.ragium.common.block.HTBasicEntityBlock +import net.minecraft.core.BlockPos +import net.minecraft.world.InteractionHand +import net.minecraft.world.InteractionResult +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.phys.BlockHitResult +import net.neoforged.neoforge.transfer.fluid.FluidUtil + +open class HTFluidBusBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : + HTBasicEntityBlock(type, properties) { + override fun useItemOn( + itemStack: ItemStack, + state: BlockState, + level: Level, + pos: BlockPos, + player: Player, + hand: InteractionHand, + hitResult: BlockHitResult + ): InteractionResult { + val result: InteractionResult = super.useItemOn(itemStack, state, level, pos, player, hand, hitResult) + if (itemStack.isEmpty) return result + if (!player.isShiftKeyDown) { + val moved: Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) + if (moved) { + return InteractionResult.SUCCESS + } + } + return result + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt new file mode 100644 index 000000000..e5df85222 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt @@ -0,0 +1,177 @@ +package hiiragi283.ragium.common.block.entity.machine + +import hiiragi283.lib.HTConstants +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.gui.HTSlotHelper +import hiiragi283.lib.gui.widget.HTWidgetHolder +import hiiragi283.lib.recipe.handler.HTFluidInputTank +import hiiragi283.lib.recipe.handler.HTItemInputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlotHelper +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.lookup.HTRecipeCache +import hiiragi283.lib.transfer.fluid.HTBasicFluidTank +import hiiragi283.lib.transfer.item.HTBasicItemSlot +import hiiragi283.lib.transfer.useTransaction +import hiiragi283.lib.world.getTypedBlockEntity +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeLookups +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity +import hiiragi283.ragium.common.gui.widget.HTFluidWidget +import hiiragi283.ragium.common.gui.widget.HTItemWidget +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTBasicItemSlotHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.core.Direction +import net.minecraft.server.level.ServerLevel +import net.minecraft.sounds.SoundEvents +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.fluids.FluidInstance +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.transfer.transaction.Transaction + +class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : + HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.ELECTROLYZER.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.ELECTROLYZING) + + override fun writeValue(output: ValueOutput) { + super.writeValue(output) + output.putChild(HTConstants.LAST_RECIPE, cache) + } + + override fun readValue(input: ValueInput) { + super.readValue(input) + input.readChild(HTConstants.LAST_RECIPE, cache) + } + + override fun initializeVariables(listener: Runnable) { + super.initializeVariables(listener) + recipeHandler = object : EnergizedHandler< + HTItemAndFluidRecipeInput, + RTElectrolyzingRecipe.ElectrolyzedResult, + RTElectrolyzingRecipe + >() { + private val machine: HTElectrolyzerBlockEntity = this@HTElectrolyzerBlockEntity + private val front: Direction get() = machine.getFront() + private val inputTank: HTFluidInputTank by lazy { HTFluidInputTank(machine.inputTank) } + private val inputSlot: HTItemInputSlot by lazy { HTItemInputSlot(machine.inputSlot) } + + private val outputTank: HTOutputSlot by lazy { HTOutputSlotHelper.forFluid(machine.outputTank) } + private val rightOutputTank: HTOutputSlot? get() = level + ?.getTypedBlockEntity(blockPos.relative(front.clockWise)) + ?.tank + ?.let(HTOutputSlotHelper::forFluid) + private val leftOutputTank: HTOutputSlot? get() = level + ?.getTypedBlockEntity(blockPos.relative(front.counterClockWise)) + ?.tank + ?.let(HTOutputSlotHelper::forFluid) + + override fun createInput(): HTItemAndFluidRecipeInput = + HTItemAndFluidRecipeInput(inputSlot.getStoredInput(), inputTank.getStoredInput()) + + override fun findRecipe(level: ServerLevel, input: HTItemAndFluidRecipeInput): RTElectrolyzingRecipe? = + cache.findFirstRecipe(input, level) + + override fun canComplete( + recipe: RTElectrolyzingRecipe, + input: HTItemAndFluidRecipeInput, + output: RTElectrolyzingRecipe.ElectrolyzedResult + ): Boolean = + rightOutputTank != null && leftOutputTank != null && useTransaction { transaction: Transaction -> + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) + when { + inputSlot.use(itemInput, transaction).failed -> false + + inputTank.use(fluidInput, transaction).failed -> false + + else -> { + val (right: FluidStack, left: FluidStack, main: FluidStack) = output + when { + rightOutputTank!!.take(right, transaction) != HTOutputSlot.TakeResult.FULL -> false + leftOutputTank!!.take(left, transaction) != HTOutputSlot.TakeResult.FULL -> false + else -> outputTank.take(main, transaction).fullOrNoneTaken + } + } + } + } + + override fun onComplete( + recipe: RTElectrolyzingRecipe, + input: HTItemAndFluidRecipeInput, + output: RTElectrolyzingRecipe.ElectrolyzedResult + ) { + useTransaction { transaction: Transaction -> + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) + inputSlot.use(itemInput, transaction) + inputTank.use(fluidInput, transaction) + val (right: FluidStack, left: FluidStack, main: FluidStack) = output + outputTank.take(main, transaction) + rightOutputTank?.take(right, transaction) + leftOutputTank?.take(left, transaction) + transaction.commit() + } + playSound(SoundEvents.FIREWORK_ROCKET_TWINKLE) + } + } + } + + private lateinit var inputTank: HTBasicFluidTank + private lateinit var outputTank: HTBasicFluidTank + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + inputTank = builder.addSlot(HTSlotInfo.INPUT, HTVariableFluidTank.input(getTankCapacity(), listener)) + outputTank = builder.addSlot(HTSlotInfo.OUTPUT, HTVariableFluidTank.output(getTankCapacity(), listener)) + } + + private lateinit var inputSlot: HTBasicItemSlot + + override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { + inputSlot = builder.addSlot(HTSlotInfo.INPUT, HTBasicItemSlot.input(listener)) + } + + override fun setupMenu(widgetHolder: HTWidgetHolder) { + super.setupMenu(widgetHolder) + addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(2.5), HTSlotHelper.getSlotPosY(1.5)) + // progress + addProgressBar(widgetHolder) + // inputs + widgetHolder += HTItemWidget.Container( + inputSlot, + 0, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(0.5), + HTBackgroundType.INPUT + ) + widgetHolder.track(inputSlot) + widgetHolder += HTFluidWidget.Tank( + inputTank, + HTSlotHelper.getSlotPosX(1), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.INPUT, + false + ) + widgetHolder.track(inputTank) + // output + widgetHolder += HTFluidWidget.Tank( + outputTank, + HTSlotHelper.getSlotPosX(6), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.OUTPUT, + false + ) + widgetHolder.track(outputTank) + } + + override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.electrolyzer +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt index 2de31fd35..42069ac88 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToFluidBlockEntity.kt @@ -83,10 +83,8 @@ abstract class HTItemAndFluidToFluidBlockEntity( input: HTItemAndFluidRecipeInput, output: FluidStack ): Boolean = useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) when { inputSlot.use(itemInput, transaction).failed -> false inputTank.use(fluidInput, transaction).failed -> false @@ -100,10 +98,8 @@ abstract class HTItemAndFluidToFluidBlockEntity( output: FluidStack ) { useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) inputSlot.use(itemInput, transaction) inputTank.use(fluidInput, transaction) outputTank.take(output, transaction) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt index 3c6b7d037..313f51698 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemAndFluidToItemBlockEntity.kt @@ -80,10 +80,8 @@ abstract class HTItemAndFluidToItemBlockEntity( input: HTItemAndFluidRecipeInput, output: ItemStack ): Boolean = useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) when { inputSlot.use(itemInput, transaction).failed -> false inputTank.use(fluidInput, transaction).failed -> false @@ -97,10 +95,8 @@ abstract class HTItemAndFluidToItemBlockEntity( output: ItemStack ) { useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = recipe.getMatchingStack( - input.item, - input.fluid - ) + val (itemInput: ItemInstance, fluidInput: FluidInstance) = + recipe.getMatchingStack(input.item, input.fluid) inputSlot.use(itemInput, transaction) inputTank.use(fluidInput, transaction) outputSlot.take(output, transaction) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt index 511f0332f..5c2f676b1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/base/HTItemToDoubleItemBlockEntity.kt @@ -79,7 +79,7 @@ abstract class HTItemToDoubleItemBlockEntity( when { inputSlot.use(inputConsume, transaction).failed -> false primarySlot.take(output.first, transaction) != HTOutputSlot.TakeResult.FULL -> false - else -> secondarySlot.take(output.second, transaction) == HTOutputSlot.TakeResult.FULL + else -> secondarySlot.take(output.second, transaction).fullOrNoneTaken } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt index 19aa9a1a6..20b475604 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt @@ -4,6 +4,8 @@ import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTCreativeFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap @@ -13,9 +15,12 @@ import net.neoforged.neoforge.transfer.fluid.FluidResource class HTCreativeTankBlockEntity(pos: BlockPos, state: BlockState) : HTBaseTankBlockEntity(RagiumBlockEntityTypes.CREATIVE_TANK.get(), pos, state) { - override val tank: HTCreativeFluidTank = HTCreativeFluidTank() + override lateinit var tank: HTCreativeFluidTank + private set - override fun initTank(listener: Runnable) {} + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot(HTSlotInfo.INPUT, HTCreativeFluidTank()) + } // Sync // diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt new file mode 100644 index 000000000..00b1ba7ae --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt @@ -0,0 +1,43 @@ +package hiiragi283.ragium.common.block.entity.storage + +import hiiragi283.lib.transfer.fluid.HTBasicFluidTank +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.core.component.DataComponentGetter +import net.minecraft.core.component.DataComponentMap +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.fluids.SimpleFluidContent + +class HTFluidOutputBusBlockEntity(pos: BlockPos, state: BlockState) : + HTBaseTankBlockEntity(RagiumBlockEntityTypes.FLUID_OUTPUT_BUS.get(), pos, state) { + override lateinit var tank: HTBasicFluidTank + private set + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot( + HTSlotInfo.OUTPUT, + HTVariableFluidTank.output(RagiumConfig.SERVER.tankCapacity, listener) + ) + } + + // Sync // + + override fun applyImplicitComponents(components: DataComponentGetter) { + super.applyImplicitComponents(components) + components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + } + + override fun collectImplicitComponents(components: DataComponentMap.Builder) { + super.collectImplicitComponents(components) + val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) + if (!content.isEmpty) { + components.set(RagiumDataComponents.FLUID, content) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt index 72f8e1282..729e0d30d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt @@ -6,6 +6,8 @@ import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap @@ -17,8 +19,11 @@ class HTTankBlockEntity(pos: BlockPos, state: BlockState) : override lateinit var tank: HTBasicFluidTank private set - override fun initTank(listener: Runnable) { - tank = HTVariableFluidTank.create(RagiumConfig.SERVER.tankCapacity, listener) + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot( + HTSlotInfo.INPUT, + HTVariableFluidTank.create(RagiumConfig.SERVER.tankCapacity, listener) + ) } // Sync // diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt index 311257a9b..60a264593 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/base/HTBaseTankBlockEntity.kt @@ -4,8 +4,8 @@ import hiiragi283.lib.transfer.fluid.HTFluidTank import hiiragi283.lib.transfer.holder.HTResourceSlotHolder import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.HTConfigurableBlockEntity +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder import net.minecraft.core.BlockPos -import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.Level import net.minecraft.world.level.block.entity.BlockEntityType @@ -17,18 +17,13 @@ abstract class HTBaseTankBlockEntity(type: BlockEntityType<*>, pos: BlockPos, st HTConfigurableBlockEntity(type, pos, state) { abstract val tank: HTFluidTank - override fun createFluidHandler(listener: Runnable): HTResourceSlotHolder { - initTank(listener) - return object : HTResourceSlotHolder { - override fun getSlots(side: Direction?): List = listOf(tank) - - override fun canInsert(side: Direction?): Boolean = true - - override fun canExtract(side: Direction?): Boolean = true - } + final override fun createFluidHandler(listener: Runnable): HTResourceSlotHolder? { + val builder: HTBasicFluidTankHolder.Builder = HTBasicFluidTankHolder.builder(this) + createFluidTanks(builder, listener) + return builder.build() } - protected abstract fun initTank(listener: Runnable) + protected open fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) {} override fun markDirtyComparator() { level?.updateNeighbourForOutputSignal(blockPos, blockState.block) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt index 7138717eb..545c81197 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt @@ -1,46 +1,19 @@ package hiiragi283.ragium.common.block.storage import hiiragi283.lib.registry.HTDeferredBlockEntityType -import hiiragi283.ragium.common.block.HTBasicEntityBlock +import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock import net.minecraft.core.BlockPos -import net.minecraft.world.InteractionHand -import net.minecraft.world.InteractionResult -import net.minecraft.world.entity.player.Player -import net.minecraft.world.item.ItemStack import net.minecraft.world.level.BlockGetter -import net.minecraft.world.level.Level import net.minecraft.world.level.block.state.BlockState -import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape -import net.neoforged.neoforge.transfer.fluid.FluidUtil -class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTBasicEntityBlock(type, properties) { +class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTFluidBusBlock(type, properties) { companion object { @JvmField val SHAPE: VoxelShape = box(2.0, 0.0, 2.0, 14.0, 16.0, 14.0) } - override fun useItemOn( - itemStack: ItemStack, - state: BlockState, - level: Level, - pos: BlockPos, - player: Player, - hand: InteractionHand, - hitResult: BlockHitResult - ): InteractionResult { - val result: InteractionResult = super.useItemOn(itemStack, state, level, pos, player, hand, hitResult) - if (itemStack.isEmpty) return result - if (!player.isShiftKeyDown) { - val moved: Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) - if (moved) { - return InteractionResult.SUCCESS - } - } - return result - } - override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape = SHAPE } diff --git a/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt b/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt index 740a8452c..d1577f355 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/transfer/fluid/HTVariableFluidTank.kt @@ -31,9 +31,13 @@ class HTVariableFluidTank( listener: Runnable?, canInsert: Predicate = HTTransferPredicates.alwaysTrue(), filter: Predicate = canInsert - ): HTVariableFluidTank = create(capacity, listener, HTTransferPredicates.notExternal(), { resource, _ -> - canInsert.test(resource) - }, filter) + ): HTVariableFluidTank = create( + capacity, + listener, + HTTransferPredicates.notExternal(), + { resource: FluidResource, _ -> canInsert.test(resource) }, + filter + ) @JvmStatic fun output(capacity: IntSupplier, listener: Runnable?): HTVariableFluidTank = From f52c401045e3c227a54108e911161845753d534e Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 16:10:12 +0900 Subject: [PATCH 05/38] =?UTF-8?q?fix:=20HTPotionFluidIngredient=20?= =?UTF-8?q?=E3=81=A7=E6=B0=B4=E3=81=8C=E6=AD=A3=E5=B8=B8=E3=81=AB=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B?= =?UTF-8?q?=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 17 ++++++++++------- .../ingredient/HTPotionFluidIngredient.kt | 7 +++++-- 2 files changed, 15 insertions(+), 9 deletions(-) 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 320d59f59..fe640845b 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -18,6 +18,7 @@ import hiiragi283.lib.registry.asHolderSequence import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumRegistries +import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders @@ -45,9 +46,9 @@ import mezz.jei.api.registration.IRecipeCategoryRegistration import mezz.jei.api.registration.IRecipeRegistration import mezz.jei.api.registration.ISubtypeRegistration import net.minecraft.core.Holder +import net.minecraft.core.component.DataComponents import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay @@ -75,15 +76,17 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { .map(Holder::value) .forEach { item: Item -> if (item is HTPotionBasedItem) { - registration.registerSubtypeInterpreter(item) { stack: ItemStack, _ -> - HTPotionHelper.getContents(stack) - } + registration.registerFromDataComponentTypes(item, DataComponents.POTION_CONTENTS) } } + + // Creative Tank + registration.registerFromDataComponentTypes(RagiumBlocks.CREATIVE_TANK.asItem(), RagiumDataComponents.FLUID) // Ore Slurry Bucket - registration.registerSubtypeInterpreter(RagiumFluids.ORE_SLURRY.bucketHolder.get()) { stack: ItemStack, _ -> - HTOreSlurryDataHelper.getData(stack) - } + registration.registerFromDataComponentTypes( + RagiumFluids.ORE_SLURRY.bucketHolder.get(), + RagiumDataComponents.ORE_SLURRY_DATA + ) } override fun registerFluidSubtypes( diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt index 1a313b254..ea36ad3ec 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt @@ -19,6 +19,7 @@ import net.minecraft.world.item.alchemy.Potions import net.minecraft.world.item.crafting.display.SlotDisplay import net.minecraft.world.level.material.Fluid import net.minecraft.world.level.material.Fluids +import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.crafting.FluidIngredient import net.neoforged.neoforge.fluids.crafting.FluidIngredientType @@ -48,8 +49,10 @@ data class HTPotionFluidIngredient(val potions: HolderSet) : FluidIngred constructor(potion: Holder) : this(HolderSet.direct(potion)) - override fun test(fluidStack: FluidStack): Boolean = - HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) + override fun test(fluidStack: FluidStack): Boolean = when { + fluidStack.`is`(Tags.Fluids.WATER) -> Potions.WATER in potions + else -> HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) + } @Suppress("DEPRECATION") override fun generateFluids(): Stream> = From 462d8c43801a3d92059a0366e72edc70662f29fe Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 16:28:26 +0900 Subject: [PATCH 06/38] =?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=8C=E5=A1=A9=E6=B0=B4=E3=80=8D=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=20refactor:=20Electrolyzer=20=E3=81=AE?= =?UTF-8?q?=E3=82=AB=E3=83=86=E3=82=B4=E3=83=AA=E3=82=92=20Chemical=20?= =?UTF-8?q?=E3=81=8B=E3=82=89=20Electronics=20=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 5 ++ .../client/integration/jei/RagiumJeiPlugin.kt | 12 ++--- .../integration/jei/RagiumJeiRecipeTypes.kt | 8 +-- .../category/RTElectrolyzingRecipeCategory.kt | 14 ++--- .../data/lang/RagiumEnglishLangProvider.kt | 5 +- .../data/lang/RagiumJapaneseLangProvider.kt | 5 +- .../recipe/RagiumChemicalRecipeProvider.kt | 2 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 3 +- .../recipe/RagiumElectronicsRecipeProvider.kt | 2 +- .../recipe/RagiumVanillaRecipeProvider.kt | 2 +- .../ragium/blockstates/electrolyzer.json | 8 +-- .../assets/ragium/blockstates/salt_water.json | 7 +++ .../ragium/items/salt_water_bucket.json | 12 +++++ .../resources/assets/ragium/lang/en_us.json | 4 ++ .../resources/assets/ragium/lang/ja_jp.json | 4 ++ .../ragium/models/block/electrolyzer.json | 2 +- .../ragium/models/block/salt_water.json | 5 ++ .../data/c/tags/fluid/salt_water.json | 6 +++ .../resources/data/c/tags/item/buckets.json | 1 + .../data/c/tags/item/buckets/salt_water.json | 5 ++ .../hydrogen_from_salt_water.json | 8 +-- .../electrolyzing/hydrogen_from_water.json | 2 +- ...at_ocean.json => salt_water_at_ocean.json} | 2 +- .../ragium/recipe/shaped/electrolyzer.json | 6 +-- .../ragium/tags/block/machines/chemical.json | 1 - .../tags/block/machines/electronics.json | 1 + .../ragium/tags/item/machines/chemical.json | 1 - .../tags/item/machines/electronics.json | 1 + .../hiiragi283/ragium/api/RagiumConfig.kt | 8 +-- .../hiiragi283/ragium/api/RagiumConstants.kt | 4 +- .../builder/RTElectrolyzingRecipeBuilder.kt | 20 +------ .../recipe/builder/RagiumRecipeBuilders.kt | 16 +++--- .../api/recipe/RTElectrolyzingRecipe.kt | 41 +++++---------- .../ragium/api/recipe/RagiumRecipeLookups.kt | 6 +-- .../api/recipe/RagiumRecipeSerializers.kt | 8 +-- .../ragium/api/recipe/RagiumRecipeTypes.kt | 6 +-- .../hiiragi283/ragium/common/RagiumCommon.kt | 1 + .../ragium/common/block/RagiumBlocks.kt | 10 ++-- .../block/entity/RagiumBlockEntityTypes.kt | 10 ++-- .../machine/HTElectrolyzerBlockEntity.kt | 52 +++++-------------- .../ragium/common/fluid/RagiumFluids.kt | 3 ++ 41 files changed, 152 insertions(+), 167 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/salt_water.json create mode 100644 src/generated/resources/assets/ragium/items/salt_water_bucket.json create mode 100644 src/generated/resources/assets/ragium/models/block/salt_water.json create mode 100644 src/generated/resources/data/c/tags/fluid/salt_water.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/salt_water.json rename src/generated/resources/data/ragium/recipe/resource/extracting/{water_at_ocean.json => salt_water_at_ocean.json} (80%) diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 7c25e4c96..da2f581f7 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -44,6 +44,7 @@ import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent import net.neoforged.neoforge.client.event.EntityRenderersEvent import net.neoforged.neoforge.client.event.RegisterClientTooltipComponentFactoriesEvent import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent +import net.neoforged.neoforge.client.fluid.FluidTintSources import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent import net.neoforged.neoforge.common.tooltip.TooltipLocation import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent @@ -183,6 +184,10 @@ data object RagiumClient : HTClientMod() { colorTint(Color(0x33cc66)) } + register.register(RagiumFluids.SALT_WATER) { + dull() + tintSource = FluidTintSources.water() + } register.register(RagiumFluids.NAOH_SOLUTION) { dull() colorTint(Color(0x003366)) 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 fe640845b..a143a1995 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -172,17 +172,17 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.REFINING, RagiumRecipeLookups.REFINING) // Chemical HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BATHING, RagiumRecipeLookups.BATHING) - HTJeiRecipeHelper.addRecipes( - registration, - RagiumJeiRecipeTypes.ELECTROLYZING, - RagiumRecipeLookups.ELECTROLYZING - ) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.MIXING, RagiumRecipeLookups.MIXING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.REACTING, RagiumRecipeLookups.REACTING) // Bio HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BREWING, RagiumRecipeLookups.BREWING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PLANTING, RagiumRecipeLookups.PLANTING) // Electronics + HTJeiRecipeHelper.addRecipes( + registration, + RagiumJeiRecipeTypes.ELECTROLYZING, + RagiumRecipeLookups.ELECTROLYZING + ) HTJeiRecipeHelper.addRecipes( registration, RagiumJeiRecipeTypes.RESOURCE_EXTRACTING, @@ -286,12 +286,12 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { // Chemical registration.addCraftingStation(RagiumJeiRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) registration.addCraftingStation(RagiumJeiRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) - registration.addCraftingStation(RagiumJeiRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) registration.addCraftingStation(RagiumJeiRecipeTypes.MIXING, RagiumBlocks.MIXER) // Bio registration.addCraftingStation(RagiumJeiRecipeTypes.BREWING, RagiumBlocks.BREWERY) registration.addCraftingStation(RagiumJeiRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics + registration.addCraftingStation(RagiumJeiRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) registration.addCraftingStation(RagiumJeiRecipeTypes.ASSEMBLING, RagiumBlocks.PRECISION_ASSEMBLER) // Arcane registration.addCraftingStation(RagiumJeiRecipeTypes.ENCHANTING, RagiumBlocks.ENCHANTER) diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt index e27fd82fb..cdb9bd557 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -68,10 +68,6 @@ data object RagiumJeiRecipeTypes { val BATHING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) - @JvmField - val ELECTROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) - @JvmField val MIXING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) @@ -90,6 +86,10 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.PLANTING, RagiumBlocks.PLANTER) // Electronics + @JvmField + val ELECTROLYZING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + @JvmField val RESOURCE_EXTRACTING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.RESOURCE_EXTRACTING, RagiumBlocks.MACHINE_CASING) diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt index 54949a7bf..1b2a91bd9 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt @@ -16,7 +16,7 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( guiHelper, RagiumJeiRecipeTypes.ELECTROLYZING, - 18 * 8, + 18 * 6, 18 * 1, RTElectrolyzingRecipe.CODEC ) { @@ -24,16 +24,11 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : // inputs builder .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.fluidIngredient) + .add(recipe.ingredient) .setSlotBackground(HTBackgroundType.INPUT) - val itemInput: IRecipeSlotBuilder = builder.addInputSlot( - getPosition(2), - getPosition(0) - ).setSlotBackground(HTBackgroundType.INPUT) - recipe.itemIngredient.ifPresent(itemInput::add) // outputs val outputSlots: Array = Array(3) { index: Int -> - builder.addOutputSlot(getPosition(5 + index), getPosition(0)).setSlotBackground(HTBackgroundType.OUTPUT) + builder.addOutputSlot(getPosition(3 + index), getPosition(0)).setSlotBackground(HTBackgroundType.OUTPUT) } for ((index: Int, result: HTFluidResult) in recipe.results.withIndex()) { outputSlots[index].add(result) @@ -41,7 +36,6 @@ class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : } override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTElectrolyzingRecipe, focuses: IFocusGroup) { - builder.addRecipePlus(getPosition(1)) - builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 2d1b527ef..eb78fe1e6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -64,12 +64,12 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.CHEMICAL_BATH, "Chemical Bath") add(RagiumBlocks.CHEMICAL_REACTOR, "Chemical Reactor") - add(RagiumBlocks.ELECTROLYZER, "Electrolyzer") add(RagiumBlocks.MIXER, "Mixer") add(RagiumBlocks.BREWERY, "Brewery") add(RagiumBlocks.PLANTER, "Planter") + add(RagiumBlocks.ELECTROLYZER, "Electrolyzer") add(RagiumBlocks.PRECISION_ASSEMBLER, "Precision Assembler") add(RagiumBlocks.SCANNER, "Laser Scanner") @@ -113,6 +113,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "Liquid Explosive") addFluid(RagiumFluids.HYDROGEN_FLUORIDE, "Hydrogen Fluoride") addFluid(RagiumFluids.HYDROFLUORIC_ACID, "Hydrofluoric Acid") + addFluid(RagiumFluids.SALT_WATER, "Salt Water") addFluid(RagiumFluids.NAOH_SOLUTION, "Sodium Hydroxide Solution") addFluid(RagiumFluids.ALUMINA_SOLUTION, "Alumina Solution") addFluid(RagiumFluids.SULFUR_DIOXIDE, "Sulfur Dioxide") @@ -177,13 +178,13 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "Refining") add(RagiumRecipeTypes.BATHING, "Chemical Bathing") - add(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") add(RagiumRecipeTypes.MIXING, "Mixing") add(RagiumRecipeTypes.REACTING, "Chemical Reacting") add(RagiumRecipeTypes.BREWING, "Brewing") add(RagiumRecipeTypes.PLANTING, "Planting") + add(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "Resource Extracting") add(RagiumRecipeTypes.ENCHANTING, "Enchanting") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 1ac6ceddc..41cd0f986 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -60,12 +60,12 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.CHEMICAL_BATH, "化学浴槽") add(RagiumBlocks.CHEMICAL_REACTOR, "化学反応槽") - add(RagiumBlocks.ELECTROLYZER, "電解機") add(RagiumBlocks.MIXER, "混合機") add(RagiumBlocks.BREWERY, "醸造機") add(RagiumBlocks.PLANTER, "栽培機") + add(RagiumBlocks.ELECTROLYZER, "電解機") add(RagiumBlocks.PRECISION_ASSEMBLER, "精密組立機") add(RagiumBlocks.SCANNER, "レーザースキャナ") @@ -109,6 +109,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "液体爆薬") addFluid(RagiumFluids.HYDROGEN_FLUORIDE, "フッ化水素") addFluid(RagiumFluids.HYDROFLUORIC_ACID, "フッ化水素酸") + addFluid(RagiumFluids.SALT_WATER, "塩水") addFluid(RagiumFluids.NAOH_SOLUTION, "水酸化ナトリウム水溶液") addFluid(RagiumFluids.ALUMINA_SOLUTION, "アルミナ水溶液") addFluid(RagiumFluids.SULFUR_DIOXIDE, "二酸化硫黄") @@ -173,13 +174,13 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "蒸留") add(RagiumRecipeTypes.BATHING, "化学洗浄") - add(RagiumRecipeTypes.ELECTROLYZING, "電気分解") add(RagiumRecipeTypes.MIXING, "混合") add(RagiumRecipeTypes.REACTING, "化学反応") add(RagiumRecipeTypes.BREWING, "醸造") add(RagiumRecipeTypes.PLANTING, "栽培") + add(RagiumRecipeTypes.ELECTROLYZING, "電気分解") add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "資源採集") add(RagiumRecipeTypes.ENCHANTING, "エンチャント") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 45ec6b191..49ffcb485 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -56,7 +56,7 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu private fun electrolyzing() { // 2x H2O -> 2x H2 + O2 RagiumRecipeBuilders.electrolyzing { - fluidIngredient { +waterSet() } + ingredient { +waterSet() } result { +RagiumFluids.HYDROGEN } result { +RagiumFluids.OXYGEN diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 2eb087236..cad42f0e2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -317,8 +317,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) RagiumRecipeBuilders.electrolyzing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } - fluidIngredient { +waterSet() } + ingredient { +holderSet(RagiumFluids.SALT_WATER) } result { +RagiumFluids.HYDROGEN amount /= 2 diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt index 8e51cca59..448369717 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -22,7 +22,7 @@ class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: Completabl RagiumRecipeBuilders.resourceExtracting { biomes { +holderSet(Tags.Biomes.IS_OCEAN) } result { - +Fluids.WATER + +RagiumFluids.SALT_WATER amount *= 4 } recipeId suffix "_at_ocean" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 869bfc41e..82031f74f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -282,12 +282,12 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut heat(RagiumBlocks.SMELTER) { items { +Items.FURNACE } } // Chemical chemical(RagiumBlocks.CHEMICAL_BATH) { items { +Items.CAULDRON } } - chemical(RagiumBlocks.ELECTROLYZER) { +holderSet(ItemTags.LIGHTNING_RODS) } chemical(RagiumBlocks.MIXER) { +holderSet(Tags.Items.BUCKETS_EMPTY) } // Bio bio(RagiumBlocks.BREWERY) { items { +Items.BREWING_STAND } } bio(RagiumBlocks.PLANTER) { items { +Items.FLOWER_POT } } // Electronics + electronics(RagiumBlocks.ELECTROLYZER) { +holderSet(ItemTags.LIGHTNING_RODS) } electronics(RagiumBlocks.PRECISION_ASSEMBLER) { items { +RagiumBlocks.ASSEMBLER } } // Arcane arcane(RagiumBlocks.ENCHANTER) { items { +Items.ENCHANTING_TABLE } } diff --git a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json index 48bc37471..47fbf005c 100644 --- a/src/generated/resources/assets/ragium/blockstates/electrolyzer.json +++ b/src/generated/resources/assets/ragium/blockstates/electrolyzer.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 90 }, "facing=east,is_active=true": { @@ -9,13 +9,13 @@ "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/machine/chemical" + "model": "ragium:block/machine/electronics" }, "facing=north,is_active=true": { "model": "ragium:block/electrolyzer" }, "facing=south,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 180 }, "facing=south,is_active=true": { @@ -23,7 +23,7 @@ "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/machine/chemical", + "model": "ragium:block/machine/electronics", "y": 270 }, "facing=west,is_active=true": { diff --git a/src/generated/resources/assets/ragium/blockstates/salt_water.json b/src/generated/resources/assets/ragium/blockstates/salt_water.json new file mode 100644 index 000000000..bd4a89498 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/salt_water.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/salt_water" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/salt_water_bucket.json b/src/generated/resources/assets/ragium/items/salt_water_bucket.json new file mode 100644 index 000000000..7c048af53 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/salt_water_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:salt_water", + "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 916429d5a..6c26890ca 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -100,6 +100,7 @@ "block.ragium.red_dye": "Red Dye", "block.ragium.refinery": "Refinery", "block.ragium.resin": "Resin", + "block.ragium.salt_water": "Salt Water", "block.ragium.scanner": "Laser Scanner", "block.ragium.smelter": "Smelter", "block.ragium.sodium_hydroxide_solution": "Sodium Hydroxide Solution", @@ -283,6 +284,7 @@ "item.ragium.red_dye_bucket": "Red Dye Bucket", "item.ragium.resin_bucket": "Resin Bucket", "item.ragium.salt_dust": "Salt Dust", + "item.ragium.salt_water_bucket": "Salt Water Bucket", "item.ragium.silicon_dust": "Silicon Dust", "item.ragium.silicon_wafer": "Silicon Wafer", "item.ragium.sodium_hydroxide_solution_bucket": "Sodium Hydroxide Solution Bucket", @@ -407,6 +409,7 @@ "tag.fluid.c.ominous_flux": "Ominous Flux", "tag.fluid.c.oxygen": "Oxygen", "tag.fluid.c.resin": "Resin", + "tag.fluid.c.salt_water": "Salt Water", "tag.fluid.c.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "tag.fluid.c.sulfur_dioxide": "Sulfur Dioxide", "tag.fluid.c.sulfur_trioxide": "Sulfur Trioxide", @@ -453,6 +456,7 @@ "tag.item.c.buckets.ominous_flux": "Ominous Flux Bucket", "tag.item.c.buckets.oxygen": "Oxygen Bucket", "tag.item.c.buckets.resin": "Resin Bucket", + "tag.item.c.buckets.salt_water": "Salt Water Bucket", "tag.item.c.buckets.sodium_hydroxide_solution": "Sodium Hydroxide Solution Bucket", "tag.item.c.buckets.sulfur_dioxide": "Sulfur Dioxide Bucket", "tag.item.c.buckets.sulfur_trioxide": "Sulfur Trioxide Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index c2e43c512..4211ec951 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -100,6 +100,7 @@ "block.ragium.red_dye": "赤色の染料", "block.ragium.refinery": "精製機", "block.ragium.resin": "樹脂", + "block.ragium.salt_water": "塩水", "block.ragium.scanner": "レーザースキャナ", "block.ragium.smelter": "製錬炉", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", @@ -283,6 +284,7 @@ "item.ragium.red_dye_bucket": "赤色の染料入りバケツ", "item.ragium.resin_bucket": "樹脂入りバケツ", "item.ragium.salt_dust": "食塩の粉", + "item.ragium.salt_water_bucket": "塩水入りバケツ", "item.ragium.silicon_dust": "シリコンの粉", "item.ragium.silicon_wafer": "シリコンウェハ", "item.ragium.sodium_hydroxide_solution_bucket": "水酸化ナトリウム水溶液入りバケツ", @@ -407,6 +409,7 @@ "tag.fluid.c.ominous_flux": "不吉な流動体", "tag.fluid.c.oxygen": "酸素", "tag.fluid.c.resin": "樹脂", + "tag.fluid.c.salt_water": "塩水", "tag.fluid.c.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "tag.fluid.c.sulfur_dioxide": "二酸化硫黄", "tag.fluid.c.sulfur_trioxide": "三酸化硫黄", @@ -453,6 +456,7 @@ "tag.item.c.buckets.ominous_flux": "不吉な流動体入りバケツ", "tag.item.c.buckets.oxygen": "酸素入りバケツ", "tag.item.c.buckets.resin": "樹脂入りバケツ", + "tag.item.c.buckets.salt_water": "塩水入りバケツ", "tag.item.c.buckets.sodium_hydroxide_solution": "水酸化ナトリウム水溶液入りバケツ", "tag.item.c.buckets.sulfur_dioxide": "二酸化硫黄入りバケツ", "tag.item.c.buckets.sulfur_trioxide": "三酸化硫黄入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/electrolyzer.json b/src/generated/resources/assets/ragium/models/block/electrolyzer.json index 871ea10fd..92bd9d14e 100644 --- a/src/generated/resources/assets/ragium/models/block/electrolyzer.json +++ b/src/generated/resources/assets/ragium/models/block/electrolyzer.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/orientable", "textures": { "front": "ragium:block/electrolyzer_front", - "side": "ragium:block/machine/chemical_side", + "side": "ragium:block/machine/electronics_side", "top": "ragium:block/machine_casing" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/salt_water.json b/src/generated/resources/assets/ragium/models/block/salt_water.json new file mode 100644 index 000000000..67032282f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/salt_water.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/water_still" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/salt_water.json b/src/generated/resources/data/c/tags/fluid/salt_water.json new file mode 100644 index 000000000..d7f9e601b --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/salt_water.json @@ -0,0 +1,6 @@ +{ + "values": [ + "ragium:flowing_salt_water", + "ragium:salt_water" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index fc1fe9cb8..8356214c7 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -42,6 +42,7 @@ "#c:buckets/oxygen", "#c:buckets/potion", "#c:buckets/resin", + "#c:buckets/salt_water", "#c:buckets/sodium_hydroxide_solution", "#c:buckets/sulfur_dioxide", "#c:buckets/sulfur_trioxide", diff --git a/src/generated/resources/data/c/tags/item/buckets/salt_water.json b/src/generated/resources/data/c/tags/item/buckets/salt_water.json new file mode 100644 index 000000000..d49d534f7 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/salt_water.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:salt_water_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json index 161e77bfc..347ee03bc 100644 --- a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json +++ b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_salt_water.json @@ -1,12 +1,8 @@ { "type": "ragium:electrolyzing", - "fluid_ingredient": { + "ingredient": { "amount": 1000, - "fluids": "#c:water" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/salt" + "fluids": "#c:salt_water" }, "results": [ { diff --git a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json index b1e72301b..af0768a99 100644 --- a/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json +++ b/src/generated/resources/data/ragium/recipe/electrolyzing/hydrogen_from_water.json @@ -1,6 +1,6 @@ { "type": "ragium:electrolyzing", - "fluid_ingredient": { + "ingredient": { "amount": 1000, "fluids": "#c:water" }, diff --git a/src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json b/src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json similarity index 80% rename from src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json rename to src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json index b06ae2560..48fa996a6 100644 --- a/src/generated/resources/data/ragium/recipe/resource/extracting/water_at_ocean.json +++ b/src/generated/resources/data/ragium/recipe/resource/extracting/salt_water_at_ocean.json @@ -3,7 +3,7 @@ "condition": "#c:is_ocean", "result": { "amount": 4000, - "id": "minecraft:water" + "id": "ragium:salt_water" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json index 4a3c27412..ce949af4c 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json +++ b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json @@ -2,9 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/black_steel", - "B": "ragium:chemical_machine_parts", - "C": "#c:gears/gold", + "A": "#c:nuggets/void_metal", + "B": "ragium:electronics_machine_parts", + "C": "#c:gears/diamond", "D": "#minecraft:lightning_rods" }, "pattern": [ 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 72f068868..e851b2628 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/block/machines/chemical.json @@ -2,7 +2,6 @@ "values": [ "ragium:chemical_bath", "ragium:chemical_reactor", - "ragium:electrolyzer", "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/block/machines/electronics.json b/src/generated/resources/data/ragium/tags/block/machines/electronics.json index 1be45a33d..2be2125c5 100644 --- a/src/generated/resources/data/ragium/tags/block/machines/electronics.json +++ b/src/generated/resources/data/ragium/tags/block/machines/electronics.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:electrolyzer", "ragium:precision_assembler", "ragium:scanner" ] diff --git a/src/generated/resources/data/ragium/tags/item/machines/chemical.json b/src/generated/resources/data/ragium/tags/item/machines/chemical.json index 72f068868..e851b2628 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/chemical.json +++ b/src/generated/resources/data/ragium/tags/item/machines/chemical.json @@ -2,7 +2,6 @@ "values": [ "ragium:chemical_bath", "ragium:chemical_reactor", - "ragium:electrolyzer", "ragium:mixer" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/machines/electronics.json b/src/generated/resources/data/ragium/tags/item/machines/electronics.json index 1be45a33d..2be2125c5 100644 --- a/src/generated/resources/data/ragium/tags/item/machines/electronics.json +++ b/src/generated/resources/data/ragium/tags/item/machines/electronics.json @@ -1,5 +1,6 @@ { "values": [ + "ragium:electrolyzer", "ragium:precision_assembler", "ragium:scanner" ] diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index cdf93d609..59c128668 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -137,10 +137,6 @@ data object RagiumConfig { val chemicalReactor: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.CHEMICAL_REACTOR) - @JvmField - val electrolyzer: HTEnergyConfig = - HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER) - @JvmField val mixer: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.MIXER) @@ -155,6 +151,10 @@ data object RagiumConfig { HTEnergyConfig.createMachine(builder, RagiumConstants.PLANTER) // Electronics + @JvmField + val electrolyzer: HTEnergyConfig = + HTEnergyConfig.createMachine(builder, RagiumConstants.ELECTROLYZER, 64) + @JvmField val precisionAssembler: HTEnergyConfig = HTEnergyConfig.createMachine(builder, RagiumConstants.PRECISION_ASSEMBLER, 64) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 2016b67c6..3f6117868 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -25,7 +25,6 @@ data object RagiumConstants { // Chemical const val CHEMICAL_BATH = "chemical_bath" const val CHEMICAL_REACTOR = "chemical_reactor" - const val ELECTROLYZER = "electrolyzer" const val MIXER = "mixer" // Bio @@ -33,6 +32,7 @@ data object RagiumConstants { const val PLANTER = "planter" // Electronics + const val ELECTROLYZER = "electrolyzer" const val PRECISION_ASSEMBLER = "precision_assembler" const val SCANNER = "scanner" @@ -60,7 +60,6 @@ data object RagiumConstants { // Chemical const val BATHING = "bathing" - const val ELECTROLYZING = "electrolyzing" const val MIXING = "mixing" const val REACTING = "reacting" @@ -69,6 +68,7 @@ data object RagiumConstants { const val PLANTING = "planting" // Electronics + const val ELECTROLYZING = "electrolyzing" const val PRINTING = "printing" const val RESOURCE_EXTRACTING = "resource/extracting" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt index daa089d8a..db5a51593 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTElectrolyzingRecipeBuilder.kt @@ -5,17 +5,14 @@ package hiiragi283.ragium.api.data.recipe.builder import hiiragi283.lib.collection.toNel import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.util.HTDelegates import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.Identifier -import java.util.Optional import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -24,29 +21,16 @@ class RTElectrolyzingRecipeBuilder : HTProgressRecipeBuilder by HTDelegates.optionalInitialize() - @PublishedApi internal var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() - operator fun HTItemIngredient.unaryPlus() { - itemIngredient = Optional.of(this) - } - operator fun HTFluidIngredient.unaryPlus() { fluidIngredient = this } - inline fun itemIngredient(builderAction: HTItemIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemIngredientBuilder.build(builderAction) - } - - inline fun fluidIngredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 9fd9cbf0d..a1fe91fbe 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -155,14 +155,6 @@ data object RagiumRecipeBuilders { return HTItemAndFluidToRecipeBuilder.ToItem(RagiumConstants.BATHING, ::RTBathingRecipe).apply(builderAction) } - @JvmStatic - inline fun electrolyzing(builderAction: RTElectrolyzingRecipeBuilder.() -> Unit): RTElectrolyzingRecipeBuilder { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - return RTElectrolyzingRecipeBuilder().apply(builderAction) - } - @JvmStatic inline fun mixing( builderAction: HTItemAndFluidToRecipeBuilder.ToFluid.() -> Unit @@ -203,6 +195,14 @@ data object RagiumRecipeBuilders { } // Electronics + @JvmStatic + inline fun electrolyzing(builderAction: RTElectrolyzingRecipeBuilder.() -> Unit): RTElectrolyzingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTElectrolyzingRecipeBuilder().apply(builderAction) + } + @JvmStatic inline fun resourceExtracting( builderAction: RTResourceExtractingRecipeBuilder.() -> Unit diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt index 4fdd7020e..96be228b6 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt @@ -10,45 +10,34 @@ import hiiragi283.lib.recipe.base.HTProgressRecipe import hiiragi283.lib.recipe.base.HTRecipeFactories import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.ingredient.test -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.createOrEmpty import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.codec.compactNelFieldOf -import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.lib.serialization.network.nelOf -import hiiragi283.lib.util.fold import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.item.ItemInstance -import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeSerializer import net.neoforged.neoforge.fluids.FluidInstance import net.neoforged.neoforge.fluids.FluidStack -import java.util.Optional @JvmRecord data class RTElectrolyzingRecipe( - val itemIngredient: Optional, - val fluidIngredient: HTFluidIngredient, + val ingredient: HTFluidIngredient, val results: Nel, override val progressData: HTProgressData -) : HTRecipePredicates.ItemAndFluid, - HTRecipeFactories.ItemAndFluid, - HTProgressRecipe.Simple, - HTSerializableRecipe { +) : HTRecipePredicates.SingleFluid, + HTRecipeFactories.SingleFluidTo, + HTProgressRecipe.Simple, + HTSerializableRecipe { companion object { @JvmField val CODEC: MapCodec = HTCodecs.recordMap { instance -> instance.group( - HTItemIngredient.CODEC - .optionalFieldOf(HTConstants.ITEM_INGREDIENT) - .forGetter(RTElectrolyzingRecipe::itemIngredient), HTFluidIngredient.CODEC - .fieldOf(HTConstants.FLUID_INGREDIENT) - .forGetter(RTElectrolyzingRecipe::fluidIngredient), + .fieldOf(HTConstants.INGREDIENT) + .forGetter(RTElectrolyzingRecipe::ingredient), HTFluidResult.CODEC .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 3) .forGetter(RTElectrolyzingRecipe::results), @@ -58,10 +47,8 @@ data class RTElectrolyzingRecipe( @JvmField val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.optional(HTItemIngredient.STREAM_CODEC), - RTElectrolyzingRecipe::itemIngredient, HTFluidIngredient.STREAM_CODEC, - RTElectrolyzingRecipe::fluidIngredient, + RTElectrolyzingRecipe::ingredient, HTFluidResult.STREAM_CODEC.nelOf(), RTElectrolyzingRecipe::results, HTProgressData.STREAM_CODEC, @@ -73,15 +60,11 @@ data class RTElectrolyzingRecipe( val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) } - override fun test(first: ItemInstance, second: FluidInstance): Boolean = - itemIngredient.test(first) && fluidIngredient.test(second) + override fun test(input: FluidInstance): Boolean = ingredient.test(input) - override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = Pair( - itemIngredient.fold(ItemStack::EMPTY) { it.getMatchingStack(first) }, - fluidIngredient.getMatchingStack(second) - ) + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) - override fun apply(first: ItemInstance, second: FluidInstance): ElectrolyzedResult = ElectrolyzedResult( + override fun apply(input: FluidInstance): ElectrolyzedResult = ElectrolyzedResult( results.head.create(), results.getOrNull(1).createOrEmpty(), results.getOrNull(2).createOrEmpty() diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index ae8e51d50..a24aec660 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -70,9 +70,6 @@ data object RagiumRecipeLookups { @JvmField val BATHING: HTCompoundRecipeLookup = create(RagiumConstants.BATHING) - @JvmField - val ELECTROLYZING: HTRecipeLookup = create(RagiumRecipeTypes.ELECTROLYZING) - @JvmField val MIXING: HTCompoundRecipeLookup = create(RagiumConstants.MIXING) @@ -87,6 +84,9 @@ data object RagiumRecipeLookups { val PLANTING: HTCompoundRecipeLookup = create(RagiumConstants.PLANTING) // Electronics + @JvmField + val ELECTROLYZING: HTRecipeLookup = create(RagiumRecipeTypes.ELECTROLYZING) + @JvmField val RESOURCE_EXTRACTING: HTRecipeLookup = create(RagiumRecipeTypes.RESOURCE_EXTRACTING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index 73d98844e..0d1a26c55 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -87,10 +87,6 @@ data object RagiumRecipeSerializers { val BATHING: RecipeSerializer = register(RagiumConstants.BATHING, RTBathingRecipe.SERIALIZER) - @JvmField - val ELECTROLYZING: RecipeSerializer = - register(RagiumConstants.ELECTROLYZING, RTElectrolyzingRecipe.SERIALIZER) - @JvmField val MIXING: RecipeSerializer = register(RagiumConstants.MIXING, RTMixingRecipe.SERIALIZER) @@ -109,6 +105,10 @@ data object RagiumRecipeSerializers { register(RagiumConstants.PLANTING, RTPlantingRecipe.SERIALIZER) // Electronics + @JvmField + val ELECTROLYZING: RecipeSerializer = + register(RagiumConstants.ELECTROLYZING, RTElectrolyzingRecipe.SERIALIZER) + @JvmField val RESOURCE_EXTRACTING: RecipeSerializer = register(RagiumConstants.RESOURCE_EXTRACTING, RTResourceExtractingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 3a44487c4..49255eb1b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -67,9 +67,6 @@ data object RagiumRecipeTypes { @JvmField val BATHING: HTRecipeType = create(RagiumConstants.BATHING) - @JvmField - val ELECTROLYZING: HTRecipeType = create(RagiumConstants.ELECTROLYZING) - @JvmField val MIXING: HTRecipeType = create(RagiumConstants.MIXING) @@ -84,6 +81,9 @@ data object RagiumRecipeTypes { val PLANTING: HTRecipeType = create(RagiumConstants.PLANTING) // Electronics + @JvmField + val ELECTROLYZING: HTRecipeType = create(RagiumConstants.ELECTROLYZING) + @JvmField val RESOURCE_EXTRACTING: HTRecipeType = create(RagiumConstants.RESOURCE_EXTRACTING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index eb5447ac2..b191c67d0 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -105,6 +105,7 @@ internal data object RagiumCommon { setChemical(RagiumFluids.HYDROGEN_FLUORIDE, RagiumChemicals.HYDROGEN_FLUORIDE) setChemical(RagiumFluids.HYDROFLUORIC_ACID, RagiumChemicals.HYDROGEN_FLUORIDE) + setChemical(RagiumFluids.SALT_WATER, RagiumChemicals.SODIUM_CHLORIDE) setChemical(RagiumFluids.NAOH_SOLUTION, RagiumChemicals.SODIUM_HYDROXIDE) setChemical(RagiumFluids.ALUMINA_SOLUTION, RagiumChemicals.ALUMINA) setChemical(RagiumFluids.SULFUR_DIOXIDE, RagiumChemicals.SULFUR_DIOXIDE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 38eca5719..08307562f 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -288,10 +288,6 @@ data object RagiumBlocks { val CHEMICAL_REACTOR: HTBasicDeferredBlockAndItem = registerFakeMachine(RagiumConstants.CHEMICAL_REACTOR) - @JvmField - val ELECTROLYZER: HTBasicDeferredBlockAndItem = - registerMachine(RagiumBlockEntityTypes.ELECTROLYZER) - @JvmField val MIXER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.MIXER) @@ -306,6 +302,10 @@ data object RagiumBlocks { registerMachine(RagiumBlockEntityTypes.PLANTER) // Electronics + @JvmField + val ELECTROLYZER: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.ELECTROLYZER) + @JvmField val PRECISION_ASSEMBLER: HTBasicDeferredBlockAndItem = registerMachine(RagiumBlockEntityTypes.PRECISION_ASSEMBLER) @@ -338,12 +338,12 @@ data object RagiumBlocks { put(HTMachineType.CHEMICAL, CHEMICAL_BATH) put(HTMachineType.CHEMICAL, CHEMICAL_REACTOR) - put(HTMachineType.CHEMICAL, ELECTROLYZER) put(HTMachineType.CHEMICAL, MIXER) put(HTMachineType.BIO, BREWERY) put(HTMachineType.BIO, PLANTER) + put(HTMachineType.ELECTRONICS, ELECTROLYZER) put(HTMachineType.ELECTRONICS, PRECISION_ASSEMBLER) put(HTMachineType.ELECTRONICS, SCANNER) 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 d5f311c60..6d3a3079a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -100,10 +100,6 @@ data object RagiumBlockEntityTypes { val CHEMICAL_BATH: HTDeferredBlockEntityType = registerTick(RagiumConstants.CHEMICAL_BATH, ::HTChemicalBathBlockEntity) - @JvmField - val ELECTROLYZER: HTDeferredBlockEntityType = - registerTick(RagiumConstants.ELECTROLYZER, ::HTElectrolyzerBlockEntity) - @JvmField val MIXER: HTDeferredBlockEntityType = registerTick(RagiumConstants.MIXER, ::HTMixerBlockEntity) @@ -118,6 +114,10 @@ data object RagiumBlockEntityTypes { registerTick(RagiumConstants.PLANTER, ::HTPlanterBlockEntity) // Electronics + @JvmField + val ELECTROLYZER: HTDeferredBlockEntityType = + registerTick(RagiumConstants.ELECTROLYZER, ::HTElectrolyzerBlockEntity) + @JvmField val PRECISION_ASSEMBLER: HTDeferredBlockEntityType = registerTick(RagiumConstants.PRECISION_ASSEMBLER, ::HTPrecisionAssemblerBlockEntity) @@ -189,12 +189,12 @@ data object RagiumBlockEntityTypes { registerProcessor(SMELTER.get()) registerProcessor(CHEMICAL_BATH.get()) - registerProcessor(ELECTROLYZER.get()) registerProcessor(MIXER.get()) registerProcessor(BREWERY.get()) registerProcessor(PLANTER.get()) + registerProcessor(ELECTROLYZER.get()) registerProcessor(PRECISION_ASSEMBLER.get()) registerProcessor(ENCHANTER.get()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt index e5df85222..1e7a03f10 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTElectrolyzerBlockEntity.kt @@ -5,13 +5,11 @@ import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder import hiiragi283.lib.recipe.handler.HTFluidInputTank -import hiiragi283.lib.recipe.handler.HTItemInputSlot import hiiragi283.lib.recipe.handler.HTOutputSlot import hiiragi283.lib.recipe.handler.HTOutputSlotHelper -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.lookup.HTRecipeCache import hiiragi283.lib.transfer.fluid.HTBasicFluidTank -import hiiragi283.lib.transfer.item.HTBasicItemSlot import hiiragi283.lib.transfer.useTransaction import hiiragi283.lib.world.getTypedBlockEntity import hiiragi283.ragium.api.RagiumConfig @@ -21,16 +19,13 @@ import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity import hiiragi283.ragium.common.gui.widget.HTFluidWidget -import hiiragi283.ragium.common.gui.widget.HTItemWidget import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder -import hiiragi283.ragium.common.transfer.holder.HTBasicItemSlotHolder import hiiragi283.ragium.common.transfer.holder.HTSlotInfo import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel import net.minecraft.sounds.SoundEvents -import net.minecraft.world.item.ItemInstance import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.storage.ValueInput import net.minecraft.world.level.storage.ValueOutput @@ -40,7 +35,7 @@ import net.neoforged.neoforge.transfer.transaction.Transaction class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.ELECTROLYZER.get(), pos, state) { - private val cache: HTRecipeCache = + private val cache: HTRecipeCache = HTRecipeCache(RagiumRecipeLookups.ELECTROLYZING) override fun writeValue(output: ValueOutput) { @@ -56,14 +51,13 @@ class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) recipeHandler = object : EnergizedHandler< - HTItemAndFluidRecipeInput, + HTSingleFluidRecipeInput, RTElectrolyzingRecipe.ElectrolyzedResult, RTElectrolyzingRecipe >() { private val machine: HTElectrolyzerBlockEntity = this@HTElectrolyzerBlockEntity private val front: Direction get() = machine.getFront() private val inputTank: HTFluidInputTank by lazy { HTFluidInputTank(machine.inputTank) } - private val inputSlot: HTItemInputSlot by lazy { HTItemInputSlot(machine.inputSlot) } private val outputTank: HTOutputSlot by lazy { HTOutputSlotHelper.forFluid(machine.outputTank) } private val rightOutputTank: HTOutputSlot? get() = level @@ -75,24 +69,20 @@ class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : ?.tank ?.let(HTOutputSlotHelper::forFluid) - override fun createInput(): HTItemAndFluidRecipeInput = - HTItemAndFluidRecipeInput(inputSlot.getStoredInput(), inputTank.getStoredInput()) + override fun createInput(): HTSingleFluidRecipeInput = HTSingleFluidRecipeInput(inputTank.getStoredInput()) - override fun findRecipe(level: ServerLevel, input: HTItemAndFluidRecipeInput): RTElectrolyzingRecipe? = + override fun findRecipe(level: ServerLevel, input: HTSingleFluidRecipeInput): RTElectrolyzingRecipe? = cache.findFirstRecipe(input, level) override fun canComplete( recipe: RTElectrolyzingRecipe, - input: HTItemAndFluidRecipeInput, + input: HTSingleFluidRecipeInput, output: RTElectrolyzingRecipe.ElectrolyzedResult ): Boolean = rightOutputTank != null && leftOutputTank != null && useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = - recipe.getMatchingStack(input.item, input.fluid) + val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) when { - inputSlot.use(itemInput, transaction).failed -> false - - inputTank.use(fluidInput, transaction).failed -> false + inputTank.use(inputConsume, transaction).failed -> false else -> { val (right: FluidStack, left: FluidStack, main: FluidStack) = output @@ -107,14 +97,12 @@ class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : override fun onComplete( recipe: RTElectrolyzingRecipe, - input: HTItemAndFluidRecipeInput, + input: HTSingleFluidRecipeInput, output: RTElectrolyzingRecipe.ElectrolyzedResult ) { useTransaction { transaction: Transaction -> - val (itemInput: ItemInstance, fluidInput: FluidInstance) = - recipe.getMatchingStack(input.item, input.fluid) - inputSlot.use(itemInput, transaction) - inputTank.use(fluidInput, transaction) + val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) + inputTank.use(inputConsume, transaction) val (right: FluidStack, left: FluidStack, main: FluidStack) = output outputTank.take(main, transaction) rightOutputTank?.take(right, transaction) @@ -134,29 +122,15 @@ class HTElectrolyzerBlockEntity(pos: BlockPos, state: BlockState) : outputTank = builder.addSlot(HTSlotInfo.OUTPUT, HTVariableFluidTank.output(getTankCapacity(), listener)) } - private lateinit var inputSlot: HTBasicItemSlot - - override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { - inputSlot = builder.addSlot(HTSlotInfo.INPUT, HTBasicItemSlot.input(listener)) - } - override fun setupMenu(widgetHolder: HTWidgetHolder) { super.setupMenu(widgetHolder) - addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(2.5), HTSlotHelper.getSlotPosY(1.5)) + addEnergySlot(widgetHolder, HTSlotHelper.getSlotPosX(3.75), HTSlotHelper.getSlotPosY(2)) // progress addProgressBar(widgetHolder) // inputs - widgetHolder += HTItemWidget.Container( - inputSlot, - 0, - HTSlotHelper.getSlotPosX(2.5), - HTSlotHelper.getSlotPosY(0.5), - HTBackgroundType.INPUT - ) - widgetHolder.track(inputSlot) widgetHolder += HTFluidWidget.Tank( inputTank, - HTSlotHelper.getSlotPosX(1), + HTSlotHelper.getSlotPosX(2), HTSlotHelper.getSlotPosY(0), HTBackgroundType.INPUT, false diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index f8be09857..a7abc7575 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -207,6 +207,9 @@ data object RagiumFluids { } // Na + @JvmField + val SALT_WATER: HTFluidContent.Flowing = REGISTER.registerFlowing("salt_water") { properties = liquid() } + @JvmField val NAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("sodium_hydroxide_solution") { properties = liquid() From 5b2cada28b05b95cdec55def1811bacd0ba18709 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 17:01:17 +0900 Subject: [PATCH 07/38] =?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?Centrifuging=20/=20=E9=81=A0=E5=BF=83=E5=88=86=E9=9B=A2?= =?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 --- .../integration/jei/RagiumJeiRecipeTypes.kt | 5 ++ .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../recipe/RagiumChemicalRecipeProvider.kt | 14 +-- .../data/recipe/RagiumCommonRecipeProvider.kt | 8 ++ .../recipe/RagiumElectronicsRecipeProvider.kt | 14 +++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../refining/salt_dust_from_salt_water.json | 16 ++++ .../HTFluidToDoubleFluidRecipeBuilder.kt | 66 ++++++++++++++ .../recipe/base/HTFluidToDoubleFluidRecipe.kt | 88 +++++++++++++++++++ .../hiiragi283/ragium/api/RagiumConstants.kt | 2 + .../recipe/builder/RagiumRecipeBuilders.kt | 13 +++ .../ragium/api/recipe/RTCentrifugingRecipe.kt | 25 ++++++ .../ragium/api/recipe/RagiumRecipeLookups.kt | 4 + .../api/recipe/RagiumRecipeSerializers.kt | 4 + .../ragium/api/recipe/RagiumRecipeTypes.kt | 3 + .../hiiragi283/ragium/common/RagiumCommon.kt | 1 + 18 files changed, 255 insertions(+), 12 deletions(-) create mode 100644 src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json create mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.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 cdb9bd557..11d0e340e 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.integration.jei.HTJeiRecipeType +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -68,6 +69,10 @@ data object RagiumJeiRecipeTypes { val BATHING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) + @JvmField + val CENTRIFUGING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.CENTRIFUGING, RagiumBlocks.CHEMICAL_BATH) + @JvmField val MIXING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index eb78fe1e6..f5adf30a9 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -178,6 +178,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "Refining") add(RagiumRecipeTypes.BATHING, "Chemical Bathing") + add(RagiumRecipeTypes.CENTRIFUGING, "Centrifuging") add(RagiumRecipeTypes.MIXING, "Mixing") add(RagiumRecipeTypes.REACTING, "Chemical Reacting") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 41cd0f986..21d1bb610 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -174,6 +174,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.REFINING, "蒸留") add(RagiumRecipeTypes.BATHING, "化学洗浄") + add(RagiumRecipeTypes.CENTRIFUGING, "遠心分離") add(RagiumRecipeTypes.MIXING, "混合") add(RagiumRecipeTypes.REACTING, "化学反応") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 49ffcb485..45eb78b79 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -17,7 +17,7 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { bathing() - electrolyzing() + centrifuging() } private fun bathing() { @@ -53,17 +53,7 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu }.save(exporter) } - private fun electrolyzing() { - // 2x H2O -> 2x H2 + O2 - RagiumRecipeBuilders.electrolyzing { - ingredient { +waterSet() } - result { +RagiumFluids.HYDROGEN } - result { - +RagiumFluids.OXYGEN - amount /= 2 - } - recipeId suffix "_from_water" - }.save(exporter) + private fun centrifuging() { } 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 cad42f0e2..c87cbfff4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -305,6 +305,14 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId suffix "_from_block" }.save(exporter) + // NaCl(aq) -> H2O + NaCl + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumFluids.SALT_WATER) } + fluidResult { +Fluids.WATER } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) } + recipeId replace id("salt_dust_from_salt_water") + }.save(exporter) + // 2x NaCl + H2SO4 -> 2x HCl + Na2SO4 RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SALT) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt index 448369717..bebd215fa 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -14,9 +14,23 @@ import java.util.concurrent.CompletableFuture class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + electrolyzing() resourceExtracting() } + private fun electrolyzing() { + // 2x H2O -> 2x H2 + O2 + RagiumRecipeBuilders.electrolyzing { + ingredient { +waterSet() } + result { +RagiumFluids.HYDROGEN } + result { + +RagiumFluids.OXYGEN + amount /= 2 + } + recipeId suffix "_from_water" + }.save(exporter) + } + private fun resourceExtracting() { // XX -> Water RagiumRecipeBuilders.resourceExtracting { diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 6c26890ca..11e986b12 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -354,6 +354,7 @@ "recipe_type.ragium.assembling": "Assembling", "recipe_type.ragium.bathing": "Chemical Bathing", "recipe_type.ragium.brewing": "Brewing", + "recipe_type.ragium.centrifuging": "Centrifuging", "recipe_type.ragium.compressing": "Compressing", "recipe_type.ragium.crushing": "Crushing", "recipe_type.ragium.cutting": "Cutting", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 4211ec951..31781885e 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -354,6 +354,7 @@ "recipe_type.ragium.assembling": "組立", "recipe_type.ragium.bathing": "化学洗浄", "recipe_type.ragium.brewing": "醸造", + "recipe_type.ragium.centrifuging": "遠心分離", "recipe_type.ragium.compressing": "圧縮", "recipe_type.ragium.crushing": "粉砕", "recipe_type.ragium.cutting": "切断", diff --git a/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json b/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json new file mode 100644 index 000000000..82817b0d9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:refining", + "fluid_result": { + "amount": 1000, + "id": "minecraft:water" + }, + "ingredient": { + "amount": 1000, + "fluids": "#c:salt_water" + }, + "item_result": { + "count": 1, + "id": "ragium:salt_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt new file mode 100644 index 000000000..fb5eea8b7 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToDoubleFluidRecipeBuilder.kt @@ -0,0 +1,66 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.recipe.builder + +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.util.HTDelegates +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 1種類の液体から2種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +class HTFluidToDoubleFluidRecipeBuilder>(prefix: String, private val factory: Factory) : + HTProgressRecipeBuilder(prefix) { + override fun getRecipeId(): Identifier? = results.first().getId() + + override fun createRecipe(): RECIPE = factory.create(ingredient, results.toNel(), progressData) + + // Ingredient + @PublishedApi internal var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() + + operator fun HTFluidIngredient.unaryPlus() { + ingredient = this + } + + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal val results: MutableList = ObjectArrayList() + + inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + results += HTFluidResultBuilder.build(builderAction) + } + + // Factory // + + /** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ + fun interface Factory { + fun create(ingredient: HTFluidIngredient, results: Nel, progressData: HTProgressData): RECIPE + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt new file mode 100644 index 000000000..37803ee60 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToDoubleFluidRecipe.kt @@ -0,0 +1,88 @@ +package hiiragi283.lib.recipe.base + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.createOrEmpty +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.compactNelFieldOf +import hiiragi283.lib.serialization.network.nelOf +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.neoforged.neoforge.fluids.FluidInstance +import net.neoforged.neoforge.fluids.FluidStack + +/** + * 1種類の液体から2種類の液体を作成するレシピを表すインターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +interface HTFluidToDoubleFluidRecipe : + HTRecipePredicates.SingleFluid, + HTRecipeFactories.SingleFluidTo>, + HTProgressRecipe { + + fun asSingleOutput(): HTFluidToFluidRecipe = object : HTFluidToFluidRecipe { + override fun test(input: FluidInstance): Boolean = this@HTFluidToDoubleFluidRecipe.test(input) + + override fun getMatchingStack(input: FluidInstance): FluidInstance = + this@HTFluidToDoubleFluidRecipe.getMatchingStack(input) + + override fun apply(input: FluidInstance): FluidStack = this@HTFluidToDoubleFluidRecipe.apply(input).first + + override fun getProgressData(input: HTSingleFluidRecipeInput): HTProgressData = + this@HTFluidToDoubleFluidRecipe.getProgressData(input) + } + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class Basic( + val ingredient: HTFluidIngredient, + val result: Nel, + override val progressData: HTProgressData + ) : HTFluidToDoubleFluidRecipe, + HTProgressRecipe.Simple { + companion object { + @JvmStatic + fun codec(factory: HTFluidToDoubleFluidRecipeBuilder.Factory): MapCodec = + HTCodecs.recordMap { instance -> + instance.group( + HTFluidIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(Basic::ingredient), + HTFluidResult.CODEC + .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) + .forGetter(Basic::result), + HTProgressData.CODEC.forGetter(Basic::progressData) + ).apply(instance, factory::create) + } + + @JvmField + val SIMPLE_CODEC: MapCodec = codec(::Basic) + + @JvmStatic + fun streamCodec( + factory: HTFluidToDoubleFluidRecipeBuilder.Factory + ): StreamCodec = StreamCodec.composite( + HTFluidIngredient.STREAM_CODEC, + Basic::ingredient, + HTFluidResult.STREAM_CODEC.nelOf(), + Basic::result, + HTProgressData.STREAM_CODEC, + Basic::progressData, + factory::create + ) + } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): Pair = + result.head.create() to result.getOrNull(1).createOrEmpty() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index 3f6117868..c08a4cadf 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -23,6 +23,7 @@ data object RagiumConstants { const val SMELTER = "smelter" // Chemical + const val CENTRIFUGE = "centrifuge" const val CHEMICAL_BATH = "chemical_bath" const val CHEMICAL_REACTOR = "chemical_reactor" const val MIXER = "mixer" @@ -60,6 +61,7 @@ data object RagiumConstants { // Chemical const val BATHING = "bathing" + const val CENTRIFUGING = "centrifuging" const val MIXING = "mixing" const val REACTING = "reacting" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index a1fe91fbe..8e4e107e4 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.api.data.recipe.builder +import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder @@ -13,6 +14,7 @@ import hiiragi283.ragium.api.recipe.RTAlloyingRecipe import hiiragi283.ragium.api.recipe.RTAssemblingRecipe import hiiragi283.ragium.api.recipe.RTBathingRecipe import hiiragi283.ragium.api.recipe.RTBrewingRecipe +import hiiragi283.ragium.api.recipe.RTCentrifugingRecipe import hiiragi283.ragium.api.recipe.RTCompressingRecipe import hiiragi283.ragium.api.recipe.RTCrushingRecipe import hiiragi283.ragium.api.recipe.RTCuttingRecipe @@ -155,6 +157,17 @@ data object RagiumRecipeBuilders { return HTItemAndFluidToRecipeBuilder.ToItem(RagiumConstants.BATHING, ::RTBathingRecipe).apply(builderAction) } + @JvmStatic + inline fun centrifuging( + builderAction: HTFluidToDoubleFluidRecipeBuilder.() -> Unit + ): HTFluidToDoubleFluidRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return HTFluidToDoubleFluidRecipeBuilder(RagiumConstants.CENTRIFUGING, ::RTCentrifugingRecipe) + .apply(builderAction) + } + @JvmStatic inline fun mixing( builderAction: HTItemAndFluidToRecipeBuilder.ToFluid.() -> Unit diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt new file mode 100644 index 000000000..d935afbb5 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt @@ -0,0 +1,25 @@ +package hiiragi283.ragium.api.recipe + +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.result.HTFluidResult +import net.minecraft.world.item.crafting.RecipeSerializer + +class RTCentrifugingRecipe(ingredient: HTFluidIngredient, result: Nel, progressData: HTProgressData) : + HTFluidToDoubleFluidRecipe.Basic(ingredient, result, progressData), + HTSerializableRecipe { + companion object { + @JvmField + val SERIALIZER: RecipeSerializer = + RecipeSerializer(codec(::RTCentrifugingRecipe), streamCodec(::RTCentrifugingRecipe)) + } + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.CENTRIFUGING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.CENTRIFUGING +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index a24aec660..69c95d1c7 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -70,6 +71,9 @@ data object RagiumRecipeLookups { @JvmField val BATHING: HTCompoundRecipeLookup = create(RagiumConstants.BATHING) + @JvmField + val CENTRIFUGING: HTCompoundRecipeLookup = create(RagiumConstants.CENTRIFUGING) + @JvmField val MIXING: HTCompoundRecipeLookup = create(RagiumConstants.MIXING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index 0d1a26c55..e79023fa6 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -87,6 +87,10 @@ data object RagiumRecipeSerializers { val BATHING: RecipeSerializer = register(RagiumConstants.BATHING, RTBathingRecipe.SERIALIZER) + @JvmField + val CENTRIFUGING: RecipeSerializer = + register(RagiumConstants.CENTRIFUGING, RTCentrifugingRecipe.SERIALIZER) + @JvmField val MIXING: RecipeSerializer = register(RagiumConstants.MIXING, RTMixingRecipe.SERIALIZER) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 49255eb1b..ec771be79 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -67,6 +67,9 @@ data object RagiumRecipeTypes { @JvmField val BATHING: HTRecipeType = create(RagiumConstants.BATHING) + @JvmField + val CENTRIFUGING: HTRecipeType = create(RagiumConstants.CENTRIFUGING) + @JvmField val MIXING: HTRecipeType = create(RagiumConstants.MIXING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index b191c67d0..122d1c04a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -130,6 +130,7 @@ internal data object RagiumCommon { RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) RagiumRecipeLookups.BATHING.fromRecipeType(RagiumRecipeTypes.BATHING, identity()) + RagiumRecipeLookups.CENTRIFUGING.fromRecipeType(RagiumRecipeTypes.CENTRIFUGING, identity()) RagiumRecipeLookups.MIXING.fromRecipeType(RagiumRecipeTypes.MIXING, identity()) RagiumRecipeLookups.REACTING.fromRecipeType(RagiumRecipeTypes.REACTING, identity()) From 9230bd029a81d60d6960cc9400b68418985048f2 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 18:01:37 +0900 Subject: [PATCH 08/38] =?UTF-8?q?refactor:=201:1=E3=81=A7=E5=A4=89?= =?UTF-8?q?=E6=8F=9B=E3=81=99=E3=82=8B=E3=83=AC=E3=82=B7=E3=83=94=E3=81=AE?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=82=92=E5=85=B1=E9=80=9A=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/recipe/RagiumArcaneRecipeProvider.kt | 2 + .../data/recipe/RagiumCommonRecipeProvider.kt | 2 + .../data/recipe/RagiumHeatRecipeProvider.kt | 2 + .../recipe/RagiumMechanicalRecipeProvider.kt | 2 + .../recipe/builder/HTFluidToRecipeBuilder.kt | 95 ------------- .../recipe/builder/HTItemToRecipeBuilder.kt | 95 ------------- .../recipe/builder/HTSingleRecipeBuilder.kt | 130 ++++++++++++++++++ .../lib/recipe/base/HTBasicSingleRecipe.kt | 68 +++++++++ .../lib/recipe/base/HTFluidToRecipe.kt | 96 +++++-------- .../lib/recipe/base/HTItemToRecipe.kt | 93 ++++--------- .../recipe/builder/RagiumRecipeBuilders.kt | 30 ++-- 11 files changed, 286 insertions(+), 329 deletions(-) delete mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt index 7914fa1f2..952ebe860 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumArcaneRecipeProvider.kt @@ -1,6 +1,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index c87cbfff4..080d88945 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -3,6 +3,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.collection.nelOf import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.tag.CommonTagPrefixes diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 6610f3b0d..c99252298 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -2,6 +2,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.collection.nelOf import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index bbdd793e7..a693b4dbb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -3,6 +3,8 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.color.HTColoredCollection import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.ingredient +import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.debugPath diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt deleted file mode 100644 index 33ad0d067..000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTFluidToRecipeBuilder.kt +++ /dev/null @@ -1,95 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -package hiiragi283.lib.data.recipe.builder - -import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.result.HTItemResultBuilder -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.util.HTDelegates -import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -abstract class HTFluidToRecipeBuilder, out RECIPE : Recipe<*>>( - prefix: String, - private val factory: Factory -) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier? = result.getId() - - override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) - - // Ingredient - @PublishedApi internal var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() - - operator fun HTFluidIngredient.unaryPlus() { - ingredient = this - } - - inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidIngredientBuilder.build(builderAction) - } - - // Result - @PublishedApi internal var result: RESULT by HTDelegates.onceInitialize() - - operator fun RESULT.unaryPlus() { - result = this - } - - // ToFluid // - - /** - * 1種類のアイテムと液体から1種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - class ToFluid>(prefix: String, factory: Factory) : - HTFluidToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } - } - - // ToItem // - - /** - * 1種類のアイテムと液体から1種類のアイテムを作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - class ToItem>(prefix: String, factory: Factory) : - HTFluidToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - } - - // Factory // - - /** - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - fun interface Factory, out RECIPE : Any> { - fun create(ingredient: HTFluidIngredient, result: RESULT, progressData: HTProgressData): RECIPE - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt deleted file mode 100644 index 09fa1f660..000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToRecipeBuilder.kt +++ /dev/null @@ -1,95 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -package hiiragi283.lib.data.recipe.builder - -import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder -import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.result.HTItemResultBuilder -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.util.HTDelegates -import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -abstract class HTItemToRecipeBuilder, out RECIPE : Recipe<*>>( - prefix: String, - private val factory: Factory -) : HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier? = result.getId() - - override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) - - // Ingredient - @PublishedApi internal var ingredient: HTItemIngredient by HTDelegates.onceInitialize() - - operator fun HTItemIngredient.unaryPlus() { - ingredient = this - } - - inline fun ingredient(builderAction: HTItemIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemIngredientBuilder.build(builderAction) - } - - // Result - @PublishedApi internal var result: RESULT by HTDelegates.onceInitialize() - - operator fun RESULT.unaryPlus() { - result = this - } - - // ToFluid // - - /** - * 1種類のアイテムと液体から1種類の液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - class ToFluid>(prefix: String, factory: Factory) : - HTItemToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } - } - - // ToItem // - - /** - * 1種類のアイテムと液体から1種類のアイテムを作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - class ToItem>(prefix: String, factory: Factory) : - HTItemToRecipeBuilder(prefix, factory) { - inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - } - - // Factory // - - /** - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - fun interface Factory, out RECIPE : Any> { - fun create(ingredient: HTItemIngredient, result: RESULT, progressData: HTProgressData): RECIPE - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt new file mode 100644 index 000000000..55590a561 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleRecipeBuilder.kt @@ -0,0 +1,130 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.recipe.builder + +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.base.HTBasicSingleRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.HTRecipeResult +import hiiragi283.lib.util.HTDelegates +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 1種類の材料から1種類の完成品を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +open class HTSingleRecipeBuilder, RES : HTRecipeResult<*>, out RECIPE : Recipe<*>>( + prefix: String, + private val factory: HTBasicSingleRecipe.Factory +) : HTProgressRecipeBuilder(prefix) { + final override fun getRecipeId(): Identifier? = result.getId() + + final override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) + + // Ingredient + var ingredient: ING by HTDelegates.onceInitialize() + + operator fun ING.unaryPlus() { + ingredient = this + } + + // Result + var result: RES by HTDelegates.onceInitialize() + + operator fun RES.unaryPlus() { + result = this + } +} + +// Extensions // + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToFluidRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToItemRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToFluidRecipeBuilder = HTSingleRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToItemRecipeBuilder = HTSingleRecipeBuilder + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("itemIngredient") +fun HTSingleRecipeBuilder.ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("fluidIngredient") +fun HTSingleRecipeBuilder.ingredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("itemResult") +fun HTSingleRecipeBuilder<*, HTFluidResult, *>.result(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidResultBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("fluidResult") +fun HTSingleRecipeBuilder<*, HTItemResult, *>.result(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemResultBuilder.build(builderAction) +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt new file mode 100644 index 000000000..8163d9da3 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt @@ -0,0 +1,68 @@ +package hiiragi283.lib.recipe.base + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.recipe.ingredient.HTIngredient +import hiiragi283.lib.recipe.result.HTRecipeResult +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.crafting.RecipeInput + +/** + * 1種類の材料から1種類の完成品を作成するレシピを表す抽象クラスです。 + * @param INPUT レシピの入力となるクラス + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +open class HTBasicSingleRecipe, RES : HTRecipeResult<*>>( + val ingredient: ING, + val result: RES, + override val progressData: HTProgressData +) : HTProgressRecipe.Simple { + companion object { + @JvmStatic + fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> codec( + ingredient: Codec, + result: Codec, + factory: Factory + ): MapCodec = HTCodecs.recordMap { instance -> + instance.group( + ingredient.fieldOf(HTConstants.INGREDIENT).forGetter { it.ingredient }, + result.fieldOf(HTConstants.RESULT).forGetter { it.result }, + HTProgressData.CODEC.forGetter { it.progressData } + ).apply(instance, factory::create) + } + + @JvmStatic + fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> streamCodec( + ingredient: StreamCodec, + result: StreamCodec, + factory: Factory + ): StreamCodec = StreamCodec.composite( + ingredient, + { it.ingredient }, + result, + { it.result }, + HTProgressData.STREAM_CODEC, + { it.progressData }, + factory::create + ) + } + + // Factory // + + /** + * @param ING レシピの材料を判定するクラス + * @param RES レシピの完成品を提供するクラス + * @param RECIPE 出力するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + fun interface Factory, RES : HTRecipeResult<*>, out RECIPE : Any> { + fun create(ingredient: ING, result: RES, progressData: HTProgressData): RECIPE + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt index 15bf26d1c..86e54f0ee 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt @@ -1,15 +1,10 @@ package hiiragi283.lib.recipe.base -import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.ItemStack @@ -40,73 +35,38 @@ interface HTFluidToRecipe : HTRecipeFactories.SingleFluidTo, HTProgressRecipe { - /** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ - open class Basic>( - val ingredient: HTFluidIngredient, - val result: RESULT, - override val progressData: HTProgressData - ) : HTFluidToRecipe, - HTProgressRecipe.Simple { - companion object { - @JvmStatic - fun , RECIPE : Basic> codec( - resultCodec: Codec, - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTFluidIngredient.CODEC - .fieldOf(HTConstants.INGREDIENT) - .forGetter(Basic::ingredient), - resultCodec.fieldOf(HTConstants.RESULT).forGetter(Basic::result), - HTProgressData.CODEC.forGetter(Basic::progressData) - ).apply(instance, factory::create) - } - - @JvmStatic - fun , RECIPE : Basic> streamCodec( - resultCodec: StreamCodec, - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = StreamCodec.composite( - HTFluidIngredient.STREAM_CODEC, - Basic::ingredient, - resultCodec, - Basic::result, - HTProgressData.STREAM_CODEC, - Basic::progressData, - factory::create - ) - } - - override fun test(input: FluidInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) - - override fun apply(input: FluidInstance): OUTPUT = result.create() - } - /** * @author Hiiragi Tsubasa * @since 26.1.5 */ open class BasicItem(ingredient: HTFluidIngredient, result: HTItemResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTFluidToRecipe { companion object { @JvmStatic fun codec( - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = codec(HTItemResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTFluidIngredient.CODEC, HTItemResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTItemResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTFluidIngredient.STREAM_CODEC, HTItemResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicItem) } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): ItemStack = result.create() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) } /** @@ -114,20 +74,32 @@ interface HTFluidToRecipe : * @since 26.1.5 */ open class BasicFluid(ingredient: HTFluidIngredient, result: HTFluidResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTFluidToRecipe { companion object { @JvmStatic fun codec( - factory: HTFluidToRecipeBuilder.Factory - ): MapCodec = codec(HTFluidResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTFluidIngredient.CODEC, HTFluidResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTFluidToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTFluidResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTFluidIngredient.STREAM_CODEC, HTFluidResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicFluid) } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): FluidStack = result.create() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt index 29763d990..807caf0d5 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt @@ -1,14 +1,9 @@ package hiiragi283.lib.recipe.base -import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.recipe.result.HTRecipeResult -import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.ItemInstance @@ -40,73 +35,33 @@ interface HTItemToRecipe : HTRecipeFactories.SingleItemTo, HTProgressRecipe { - /** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - open class Basic>( - val ingredient: HTItemIngredient, - val result: RESULT, - override val progressData: HTProgressData - ) : HTItemToRecipe, - HTProgressRecipe.Simple { - companion object { - @JvmStatic - fun , RECIPE : Basic> codec( - resultCodec: Codec, - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTItemIngredient.CODEC - .fieldOf(HTConstants.INGREDIENT) - .forGetter(Basic::ingredient), - resultCodec.fieldOf(HTConstants.RESULT).forGetter(Basic::result), - HTProgressData.CODEC.forGetter(Basic::progressData) - ).apply(instance, factory::create) - } - - @JvmStatic - fun , RECIPE : Basic> streamCodec( - resultCodec: StreamCodec, - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = StreamCodec.composite( - HTItemIngredient.STREAM_CODEC, - Basic::ingredient, - resultCodec, - Basic::result, - HTProgressData.STREAM_CODEC, - Basic::progressData, - factory::create - ) - } - - override fun test(input: ItemInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) - - override fun apply(input: ItemInstance): OUTPUT = result.create() - } - /** * @author Hiiragi Tsubasa * @since 26.1.5 */ open class BasicItem(ingredient: HTItemIngredient, result: HTItemResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe(ingredient, result, progressData), + HTItemToRecipe { companion object { @JvmStatic - fun codec( - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = codec(HTItemResult.CODEC, factory) + fun codec(factory: Factory): MapCodec = + codec(HTItemIngredient.CODEC, HTItemResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTItemResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTItemIngredient.STREAM_CODEC, HTItemResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicItem) } + + override fun test(input: ItemInstance): Boolean = ingredient.test(input) + + override fun apply(input: ItemInstance): ItemStack = result.create() + + override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) } /** @@ -114,20 +69,32 @@ interface HTItemToRecipe : * @since 26.1.5 */ open class BasicFluid(ingredient: HTItemIngredient, result: HTFluidResult, progressData: HTProgressData) : - Basic(ingredient, result, progressData) { + HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTItemToRecipe { companion object { @JvmStatic fun codec( - factory: HTItemToRecipeBuilder.Factory - ): MapCodec = codec(HTFluidResult.CODEC, factory) + factory: Factory + ): MapCodec = codec(HTItemIngredient.CODEC, HTFluidResult.CODEC, factory) @JvmStatic fun streamCodec( - factory: HTItemToRecipeBuilder.Factory - ): StreamCodec = streamCodec(HTFluidResult.STREAM_CODEC, factory) + factory: Factory + ): StreamCodec = + streamCodec(HTItemIngredient.STREAM_CODEC, HTFluidResult.STREAM_CODEC, factory) @JvmField val SIMPLE_CODEC: MapCodec = codec(::BasicFluid) } + + override fun test(input: ItemInstance): Boolean = ingredient.test(input) + + override fun apply(input: ItemInstance): FluidStack = result.create() + + override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 8e4e107e4..d44734c42 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -3,11 +3,13 @@ package hiiragi283.ragium.api.data.recipe.builder import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder -import hiiragi283.lib.data.recipe.builder.HTFluidToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToItemRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToFluidRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToItemAndFluidRecipeBuilder -import hiiragi283.lib.data.recipe.builder.HTItemToRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTItemToItemRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTSingleRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTTripleItemToItemRecipeBuilder import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTAlloyingRecipe @@ -49,12 +51,12 @@ data object RagiumRecipeBuilders { @JvmStatic inline fun compressing( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { + builderAction: HTItemToItemRecipeBuilder.() -> Unit + ): HTItemToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.COMPRESSING, ::RTCompressingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.COMPRESSING, ::RTCompressingRecipe).apply(builderAction) } @JvmStatic @@ -110,22 +112,22 @@ data object RagiumRecipeBuilders { @JvmStatic inline fun freezing( - builderAction: HTFluidToRecipeBuilder.ToItem.() -> Unit - ): HTFluidToRecipeBuilder.ToItem { + builderAction: HTFluidToItemRecipeBuilder.() -> Unit + ): HTFluidToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTFluidToRecipeBuilder.ToItem(RagiumConstants.FREEZING, ::RTFreezingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.FREEZING, ::RTFreezingRecipe).apply(builderAction) } @JvmStatic inline fun melting( - builderAction: HTItemToRecipeBuilder.ToFluid.() -> Unit - ): HTItemToRecipeBuilder.ToFluid { + builderAction: HTItemToFluidRecipeBuilder.() -> Unit + ): HTItemToFluidRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToFluid(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.MELTING, ::RTMeltingRecipe).apply(builderAction) } @JvmStatic @@ -229,11 +231,11 @@ data object RagiumRecipeBuilders { // Arcane @JvmStatic inline fun enchanting( - builderAction: HTItemToRecipeBuilder.ToItem.() -> Unit - ): HTItemToRecipeBuilder.ToItem { + builderAction: HTItemToItemRecipeBuilder.() -> Unit + ): HTItemToItemRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemToRecipeBuilder.ToItem(RagiumConstants.ENCHANTING, ::RTEnchantingRecipe).apply(builderAction) + return HTSingleRecipeBuilder(RagiumConstants.ENCHANTING, ::RTEnchantingRecipe).apply(builderAction) } } From 9191b9d622e27c8ca514d52462c77e9160c7386a Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 18:17:49 +0900 Subject: [PATCH 09/38] =?UTF-8?q?refactor!:=20=E5=8C=96=E5=AD=A6=E7=89=A9?= =?UTF-8?q?=E8=B3=AA=E3=82=92=E5=A4=89=E6=9B=B4=20-=20Alumina=20->=20Alumi?= =?UTF-8?q?num=20Oxide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/lang/RagiumEnglishLangProvider.kt | 21 +++++++++++++++-- .../data/lang/RagiumJapaneseLangProvider.kt | 23 ++++++++++++++++--- .../ragium/data/lang/RagiumLangProvider.kt | 4 ++++ .../resources/assets/ragium/lang/en_us.json | 16 +++++++++++++ .../resources/assets/ragium/lang/ja_jp.json | 18 ++++++++++++++- .../{alumina.json => aluminum_oxide.json} | 0 .../api/data/chemical/RagiumChemicals.kt | 4 ++-- .../ragium/api/material/RagiumMaterial.kt | 2 +- .../hiiragi283/ragium/common/RagiumCommon.kt | 2 +- 9 files changed, 80 insertions(+), 10 deletions(-) rename src/generated/resources/data/ragium/ragium/chemical/{alumina.json => aluminum_oxide.json} (100%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index f5adf30a9..3a3e59599 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -42,11 +42,9 @@ class RagiumEnglishLangProvider(output: PackOutput) : // Block add(RagiumBlocks.ECHO_BLOCK, "Block of Echo") - add(RagiumBlocks.FLUORITE_BLOCK, "Block of Fluorite") add(RagiumBlocks.FLUORITE_SLAB, "Fluorite Slab") add(RagiumBlocks.FLUORITE_STAIRS, "Fluorite Stairs") - add(RagiumBlocks.CRYOLITE_BLOCK, "Block of Cryolite") add(RagiumBlocks.CRYOLITE_SLAB, "Cryolite Slab") add(RagiumBlocks.CRYOLITE_STAIRS, "Cryolite Stairs") @@ -243,9 +241,28 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.IRON, "Iron") addFromKey(RagiumChemicals.COPPER, "Copper") + addFromKey(RagiumChemicals.GOLD, "Gold") addFromKey(RagiumChemicals.HYDROXIDE, "Hydroxide") addFromKey(RagiumChemicals.WATER, "Water") + + addFromKey(RagiumChemicals.NITRATE, "Nitrate") + addFromKey(RagiumChemicals.NITRIC_ACID, "Nitric Acid") + addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "Hydrogen Fluoride") + addFromKey(RagiumChemicals.FLUORITE, "Fluorite") + addFromKey(RagiumChemicals.CRYOLITE, "Cryolite") + + addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "Sodium Hydroxide") + addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "Sodium Chloride") + addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "Aluminum Oxide") + addFromKey(RagiumChemicals.SILICON_DIOXIDE, "Silicon Dioxide") + addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "Sulfur Dioxide") + addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "Sulfur Trioxide") + addFromKey(RagiumChemicals.SULFATE, "Sulfate") + addFromKey(RagiumChemicals.SULFURIC_ACID, "Sulfuric Acid") + addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "Hydrogen chloride") + + addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "Potassium Nitrate") // Element addFromKey(RagiumElements.HYDROGEN, "Hydrogen") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 21d1bb610..b598b4a3e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -38,11 +38,9 @@ class RagiumJapaneseLangProvider(output: PackOutput) : // Block add(RagiumBlocks.ECHO_BLOCK, "残響ブロック") - add(RagiumBlocks.FLUORITE_BLOCK, "蛍石ブロック") add(RagiumBlocks.FLUORITE_SLAB, "蛍石のハーフブロック") add(RagiumBlocks.FLUORITE_STAIRS, "蛍石の階段") - add(RagiumBlocks.CRYOLITE_BLOCK, "氷晶石ブロック") add(RagiumBlocks.CRYOLITE_SLAB, "氷晶石のハーフブロック") add(RagiumBlocks.CRYOLITE_STAIRS, "氷晶石の階段") @@ -239,9 +237,28 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.IRON, "鉄") addFromKey(RagiumChemicals.COPPER, "銅") + addFromKey(RagiumChemicals.GOLD, "金") - addFromKey(RagiumChemicals.HYDROXIDE, "水酸基") + addFromKey(RagiumChemicals.HYDROXIDE, "水酸化物") addFromKey(RagiumChemicals.WATER, "水") + + addFromKey(RagiumChemicals.NITRATE, "硝酸塩") + addFromKey(RagiumChemicals.NITRIC_ACID, "硝酸") + addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "フッ化水素") + addFromKey(RagiumChemicals.FLUORITE, "蛍石") + addFromKey(RagiumChemicals.CRYOLITE, "氷晶石") + + addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "水酸化ナトリウム") + addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "塩化ナトリウム") + addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "酸化アルミニウム") + addFromKey(RagiumChemicals.SILICON_DIOXIDE, "二酸化ケイ素") + addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "二酸化硫黄") + addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "三酸化硫黄") + addFromKey(RagiumChemicals.SULFATE, "硫酸塩") + addFromKey(RagiumChemicals.SULFURIC_ACID, "硫酸") + addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "塩化水素") + + addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "硝酸カリウム") // Element addFromKey(RagiumElements.HYDROGEN, "水素") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index a4cdde5d3..58ad033ce 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -11,6 +11,7 @@ import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.HTItemPart +import hiiragi283.ragium.api.material.HTStorageBlockPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids @@ -26,6 +27,9 @@ interface RagiumLangProvider { .forEach { (part: HTBlockPart, material: RagiumMaterial, block: HTHasTranslationKey) -> provider.add(block, part, material) } + provider.add(RagiumBlocks.FLUORITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.FLUORITE) + provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) + val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { provider.add(casing, casingPattern, machineType) diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 11e986b12..644c1c852 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -319,17 +319,33 @@ "item.ragium.wood_tar_bucket": "Wood Tar Bucket", "item.ragium.yellow_dye_bucket": "Yellow Dye Bucket", "ragium.chemical.ragium.aluminum": "Aluminum", + "ragium.chemical.ragium.aluminum_oxide": "Aluminum Oxide", "ragium.chemical.ragium.carbon": "Carbon", "ragium.chemical.ragium.chlorine": "Chlorine", "ragium.chemical.ragium.copper": "Copper", + "ragium.chemical.ragium.cryolite": "Cryolite", "ragium.chemical.ragium.diamond": "Diamond", + "ragium.chemical.ragium.fluorite": "Fluorite", + "ragium.chemical.ragium.gold": "Gold", "ragium.chemical.ragium.hydrogen": "Hydrogen", + "ragium.chemical.ragium.hydrogen_chloride": "Hydrogen chloride", + "ragium.chemical.ragium.hydrogen_fluoride": "Hydrogen Fluoride", "ragium.chemical.ragium.hydroxide": "Hydroxide", "ragium.chemical.ragium.iron": "Iron", + "ragium.chemical.ragium.nitrate": "Nitrate", + "ragium.chemical.ragium.nitric_acid": "Nitric Acid", "ragium.chemical.ragium.nitrogen": "Nitrogen", "ragium.chemical.ragium.oxygen": "Oxygen", + "ragium.chemical.ragium.potassium_nitrate": "Potassium Nitrate", "ragium.chemical.ragium.silicon": "Silicon", + "ragium.chemical.ragium.silicon_dioxide": "Silicon Dioxide", + "ragium.chemical.ragium.sodium_chloride": "Sodium Chloride", + "ragium.chemical.ragium.sodium_hydroxide": "Sodium Hydroxide", + "ragium.chemical.ragium.sulfate": "Sulfate", "ragium.chemical.ragium.sulfur": "Sulfur", + "ragium.chemical.ragium.sulfur_dioxide": "Sulfur Dioxide", + "ragium.chemical.ragium.sulfur_trioxide": "Sulfur Trioxide", + "ragium.chemical.ragium.sulfuric_acid": "Sulfuric Acid", "ragium.chemical.ragium.water": "Water", "ragium.element.ragium.aluminum": "Aluminum", "ragium.element.ragium.calcium": "Calcium", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 31781885e..a605808d4 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -319,17 +319,33 @@ "item.ragium.wood_tar_bucket": "木タール入りバケツ", "item.ragium.yellow_dye_bucket": "黄色の染料入りバケツ", "ragium.chemical.ragium.aluminum": "アルミニウム", + "ragium.chemical.ragium.aluminum_oxide": "酸化アルミニウム", "ragium.chemical.ragium.carbon": "炭素", "ragium.chemical.ragium.chlorine": "塩素", "ragium.chemical.ragium.copper": "銅", + "ragium.chemical.ragium.cryolite": "氷晶石", "ragium.chemical.ragium.diamond": "ダイヤモンド", + "ragium.chemical.ragium.fluorite": "蛍石", + "ragium.chemical.ragium.gold": "金", "ragium.chemical.ragium.hydrogen": "水素", - "ragium.chemical.ragium.hydroxide": "水酸基", + "ragium.chemical.ragium.hydrogen_chloride": "塩化水素", + "ragium.chemical.ragium.hydrogen_fluoride": "フッ化水素", + "ragium.chemical.ragium.hydroxide": "水酸化物", "ragium.chemical.ragium.iron": "鉄", + "ragium.chemical.ragium.nitrate": "硝酸塩", + "ragium.chemical.ragium.nitric_acid": "硝酸", "ragium.chemical.ragium.nitrogen": "窒素", "ragium.chemical.ragium.oxygen": "酸素", + "ragium.chemical.ragium.potassium_nitrate": "硝酸カリウム", "ragium.chemical.ragium.silicon": "ケイ素", + "ragium.chemical.ragium.silicon_dioxide": "二酸化ケイ素", + "ragium.chemical.ragium.sodium_chloride": "塩化ナトリウム", + "ragium.chemical.ragium.sodium_hydroxide": "水酸化ナトリウム", + "ragium.chemical.ragium.sulfate": "硫酸塩", "ragium.chemical.ragium.sulfur": "硫黄", + "ragium.chemical.ragium.sulfur_dioxide": "二酸化硫黄", + "ragium.chemical.ragium.sulfur_trioxide": "三酸化硫黄", + "ragium.chemical.ragium.sulfuric_acid": "硫酸", "ragium.chemical.ragium.water": "水", "ragium.element.ragium.aluminum": "アルミニウム", "ragium.element.ragium.calcium": "カルシウム", diff --git a/src/generated/resources/data/ragium/ragium/chemical/alumina.json b/src/generated/resources/data/ragium/ragium/chemical/aluminum_oxide.json similarity index 100% rename from src/generated/resources/data/ragium/ragium/chemical/alumina.json rename to src/generated/resources/data/ragium/ragium/chemical/aluminum_oxide.json diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index 183e4862f..21e300de1 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -91,7 +91,7 @@ data object RagiumChemicals { val SODIUM_CHLORIDE: ResourceKey = create("sodium_chloride") @JvmField - val ALUMINA: ResourceKey = create("alumina") + val ALUMINUM_OXIDE: ResourceKey = create("aluminum_oxide") @JvmField val SILICON_DIOXIDE: ResourceKey = create("silicon_dioxide") @@ -210,7 +210,7 @@ data object RagiumChemicals { } ) context.register( - ALUMINA, + ALUMINUM_OXIDE, HTCompoundChemical.build(context) { add(RagiumElements.ALUMINUM, 2) add(RagiumElements.OXYGEN, 3) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 877d5d09a..22bb335d6 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -188,7 +188,7 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINA), + ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), /** * @since 26.1.7 diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 122d1c04a..53d56d8e4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -107,7 +107,7 @@ internal data object RagiumCommon { setChemical(RagiumFluids.SALT_WATER, RagiumChemicals.SODIUM_CHLORIDE) setChemical(RagiumFluids.NAOH_SOLUTION, RagiumChemicals.SODIUM_HYDROXIDE) - setChemical(RagiumFluids.ALUMINA_SOLUTION, RagiumChemicals.ALUMINA) + setChemical(RagiumFluids.ALUMINA_SOLUTION, RagiumChemicals.ALUMINUM_OXIDE) setChemical(RagiumFluids.SULFUR_DIOXIDE, RagiumChemicals.SULFUR_DIOXIDE) setChemical(RagiumFluids.SULFUR_TRIOXIDE, RagiumChemicals.SULFUR_TRIOXIDE) setChemical(RagiumFluids.SULFURIC_ACID, RagiumChemicals.SULFURIC_ACID) From b34427b9e04165d56ea24252cc323946bfc66e74 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 26 Sep 2026 20:57:22 +0900 Subject: [PATCH 10/38] =?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=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=20-=20Alclad=20Plate=20-=20Carbon=20Fiber=20-=20CFRP=20Plate?= =?UTF-8?q?=20feat!:=20=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0=20Circuit=20Bo?= =?UTF-8?q?ard=20=E3=82=92=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 | 4 ++ .../data/lang/RagiumEnglishLangProvider.kt | 5 +- .../data/lang/RagiumJapaneseLangProvider.kt | 5 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 51 +++++++++++++----- .../recipe/RagiumVanillaRecipeProvider.kt | 34 +++++++----- .../{circuit_board.json => alclad_plate.json} | 2 +- .../assets/ragium/items/carbon_fiber.json | 6 +++ .../assets/ragium/items/cfrp_plate.json | 6 +++ .../assets/ragium/items/nitrogen_bucket.json | 13 +++++ .../resources/assets/ragium/lang/en_us.json | 8 ++- .../resources/assets/ragium/lang/ja_jp.json | 8 ++- .../{circuit_board.json => alclad_plate.json} | 2 +- .../ragium/models/item/carbon_fiber.json | 6 +++ .../assets/ragium/models/item/cfrp_plate.json | 6 +++ .../resources/data/c/tags/fluid/gaseous.json | 1 + .../resources/data/c/tags/fluid/nitrogen.json | 5 ++ .../resources/data/c/tags/item/buckets.json | 1 + .../data/c/tags/item/buckets/nitrogen.json | 5 ++ .../ragium/recipe/alloying/circuit_board.json | 22 -------- .../recipe/assembling/alclad_plate.json | 16 ++++++ .../recipe/assembling/electric_circuit.json | 18 ++++--- .../assembling/electronics_machine_parts.json | 18 ++++--- ...ctronics_machine_parts_by_black_metal.json | 2 +- .../ragium/recipe/bathing/cfrp_plate.json | 16 ++++++ .../ragium/recipe/shaped/electrolyzer.json | 2 +- .../data/ragium/recipe/shaped/enchanter.json | 2 +- .../recipe/shaped/precision_assembler.json | 2 +- .../hiiragi283/ragium/common/RagiumCommon.kt | 1 + .../ragium/common/fluid/RagiumFluids.kt | 3 ++ .../ragium/common/item/RagiumItems.kt | 12 +++-- .../ragium/textures/item/alclad_plate.png | Bin 0 -> 303 bytes .../ragium/textures/item/carbon_fiber.png | Bin 0 -> 301 bytes .../ragium/textures/item/cfrp_plate.png | Bin 0 -> 275 bytes 33 files changed, 209 insertions(+), 73 deletions(-) rename src/generated/resources/assets/ragium/items/{circuit_board.json => alclad_plate.json} (55%) create mode 100644 src/generated/resources/assets/ragium/items/carbon_fiber.json create mode 100644 src/generated/resources/assets/ragium/items/cfrp_plate.json create mode 100644 src/generated/resources/assets/ragium/items/nitrogen_bucket.json rename src/generated/resources/assets/ragium/models/item/{circuit_board.json => alclad_plate.json} (60%) create mode 100644 src/generated/resources/assets/ragium/models/item/carbon_fiber.json create mode 100644 src/generated/resources/assets/ragium/models/item/cfrp_plate.json create mode 100644 src/generated/resources/data/c/tags/fluid/nitrogen.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/nitrogen.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/circuit_board.json create mode 100644 src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json create mode 100644 src/main/resources/assets/ragium/textures/item/alclad_plate.png create mode 100644 src/main/resources/assets/ragium/textures/item/carbon_fiber.png create mode 100644 src/main/resources/assets/ragium/textures/item/cfrp_plate.png diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index da2f581f7..28c10722f 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -126,6 +126,10 @@ data object RagiumClient : HTClientMod() { transparent() colorTint(Color(0x003399)) } + register.register(RagiumFluids.NITROGEN) { + transparent() + colorTint(Color(0x009999)) + } register.register(RagiumFluids.OXYGEN) { transparent() colorTint(Color(0x3399cc)) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 3a3e59599..f755d8344 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -96,6 +96,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.MOLTEN_ENDER, "Resonant Ender") addFluid(RagiumFluids.HYDROGEN, "Hydrogen") + addFluid(RagiumFluids.NITROGEN, "Nitrogen") addFluid(RagiumFluids.OXYGEN, "Oxygen") addFluid(RagiumFluids.CHLORINE, "Chlorine") @@ -130,6 +131,9 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.PLASTIC_PLATE, "Plastic Plate") add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") + add(RagiumItems.CARBON_FIBER, "Carbon Fiber") + add(RagiumItems.CFRP_PLATE, "CFRP Plate") + add(RagiumItems.ALCLAD_PLATE, "Alclad Plate") add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") add(RagiumItems.BEESWAX, "Beeswax") add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") @@ -137,7 +141,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.CRUDE_SILICON, "Crude Silicon") add(RagiumItems.SILICON_WAFER, "Silicon Wafer") add(RagiumItems.CIRCUIT_CHIP, "Circuit Chip") - add(RagiumItems.CIRCUIT_BOARD, "Circuit Board") add(RagiumItems.ELECTRIC_CIRCUIT, "Electric Circuit") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index b598b4a3e..8f685db6c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -92,6 +92,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.MOLTEN_ENDER, "共振エンダー") addFluid(RagiumFluids.HYDROGEN, "水素") + addFluid(RagiumFluids.NITROGEN, "窒素") addFluid(RagiumFluids.OXYGEN, "酸素") addFluid(RagiumFluids.CHLORINE, "塩素") @@ -126,6 +127,9 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.PLASTIC_PLATE, "プラスチック板") add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") + add(RagiumItems.CARBON_FIBER, "炭素繊維") + add(RagiumItems.CFRP_PLATE, "炭素繊維強化プラスチック板") + add(RagiumItems.ALCLAD_PLATE, "アルクラッド板") add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") add(RagiumItems.BEESWAX, "密猟") add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") @@ -133,7 +137,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.CRUDE_SILICON, "粗製シリコン") add(RagiumItems.SILICON_WAFER, "シリコンウェハ") add(RagiumItems.CIRCUIT_CHIP, "回路チップ") - add(RagiumItems.CIRCUIT_BOARD, "回路基板") add(RagiumItems.ELECTRIC_CIRCUIT, "電子回路") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 080d88945..12016610b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -182,6 +182,17 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu count = 2 } }.save(exporter) + // Synthetic Fiber + Nitrogen -> Carbon Fiber + // Carbon Fiber + Resin -> CFRP Plate + RagiumRecipeBuilders.bathing { + itemIngredient { items { +RagiumItems.CARBON_FIBER } } + fluidIngredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 4 + } + result { +RagiumItems.CFRP_PLATE } + }.save(exporter) + // Naphtha + Redstone -> Anti-rust Oil RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } @@ -512,6 +523,18 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId suffix "_with_cryolite" }.save(exporter) + // Al + Cu -> Alclad Plate + RagiumRecipeBuilders.assembling { + ingredient { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.ALUMINUM) + count = 3 + } + extra { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) } + result { + +RagiumItems.ALCLAD_PLATE + count = 4 + } + }.save(exporter) } // Electronics // @@ -592,26 +615,24 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } }.save(exporter) - // Plastic + Gold Dust -> Circuit Board - RagiumRecipeBuilders.alloying { - ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } - extra { +dustOrIngot(RagiumMaterial.Metal.GOLD) } - result { +RagiumItems.CIRCUIT_BOARD } - }.save(exporter) - // Circuit Chip + Circuit Board -> Electric Circuit + // Plastic + Circuit Chip + Gold Nugget -> Electric Circuit RagiumRecipeBuilders.assembling { - ingredient { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + extra { items { +RagiumItems.CIRCUIT_CHIP } count = 2 } - extra { items { +RagiumItems.CIRCUIT_BOARD } } + extra { + +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.GOLD) + count = 3 + } result { +RagiumItems.ELECTRIC_CIRCUIT } }.save(exporter) // Machine Parts RagiumRecipeBuilders.assembling { ingredient { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) - count = 4 + count = 2 } extra { items { +RagiumItems.ELECTRIC_CIRCUIT } } result { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } @@ -619,10 +640,16 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) RagiumRecipeBuilders.assembling { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.VOID_METAL) + items { +RagiumItems.CFRP_PLATE } + } + extra { + items { +RagiumItems.CIRCUIT_CHIP } count = 2 } - extra { items { +RagiumItems.ELECTRIC_CIRCUIT } } + extra { + +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.GOLD) + count = 3 + } result { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 82031f74f..77489128d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -379,23 +379,29 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut } private inline fun electronics(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { - machine( - HTMachineType.ELECTRONICS, - RagiumMaterial.Metal.VOID_METAL, - RagiumMaterial.Gem.DIAMOND, - result, - builderAction - ) + VanillaRecipeBuilders.shaped { + +"ABA" + +"BCB" + +"ADA" + define('A') { items { +RagiumItems.ALCLAD_PLATE } } + define('B') { items { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } } + define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Gem.DIAMOND) } + define('D', builderAction) + result { +result } + }.save(exporter) } private inline fun arcane(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { - machine( - HTMachineType.ARCANE, - RagiumMaterial.Metal.VOID_METAL, - RagiumMaterial.Metal.NETHERITE, - result, - builderAction - ) + VanillaRecipeBuilders.shaped { + +"ABA" + +"BCB" + +"ADA" + define('A') { items { +Items.GHAST_TEAR } } + define('B') { items { +RagiumItems.getParts(HTMachineType.ARCANE) } } + define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Metal.NETHERITE) } + define('D', builderAction) + result { +result } + }.save(exporter) } // Machine // diff --git a/src/generated/resources/assets/ragium/items/circuit_board.json b/src/generated/resources/assets/ragium/items/alclad_plate.json similarity index 55% rename from src/generated/resources/assets/ragium/items/circuit_board.json rename to src/generated/resources/assets/ragium/items/alclad_plate.json index 8ee04d370..ed5d15f99 100644 --- a/src/generated/resources/assets/ragium/items/circuit_board.json +++ b/src/generated/resources/assets/ragium/items/alclad_plate.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/circuit_board" + "model": "ragium:item/alclad_plate" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/carbon_fiber.json b/src/generated/resources/assets/ragium/items/carbon_fiber.json new file mode 100644 index 000000000..24627ae3c --- /dev/null +++ b/src/generated/resources/assets/ragium/items/carbon_fiber.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/carbon_fiber" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cfrp_plate.json b/src/generated/resources/assets/ragium/items/cfrp_plate.json new file mode 100644 index 000000000..681433787 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cfrp_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cfrp_plate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/nitrogen_bucket.json b/src/generated/resources/assets/ragium/items/nitrogen_bucket.json new file mode 100644 index 000000000..edcd279f2 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/nitrogen_bucket.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "flip_gas": true, + "fluid": "ragium:nitrogen", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 644c1c852..771729b9e 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -87,6 +87,7 @@ "block.ragium.nether_sulfur_ore": "Nether Sulfur Ore", "block.ragium.niter_ore": "Niter Ore", "block.ragium.nitric_acid": "Nitric Acid", + "block.ragium.nitrogen": "Nitrogen", "block.ragium.ominous_flux": "Ominous Flux", "block.ragium.orange_dye": "Orange Dye", "block.ragium.ore_slurry": "Invalid Ore Slurry", @@ -187,6 +188,7 @@ "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", "item.minecraft.tipped_arrow.effect.nausea": "Arrow of Nausea", "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", + "item.ragium.alclad_plate": "Alclad Plate", "item.ragium.alumina_dust": "Alumina Dust", "item.ragium.alumina_solution_bucket": "Alumina Solution Bucket", "item.ragium.aluminum_ingot": "Aluminum Ingot", @@ -207,10 +209,11 @@ "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", "item.ragium.carbon_dust": "Carbon Dust", + "item.ragium.carbon_fiber": "Carbon Fiber", + "item.ragium.cfrp_plate": "CFRP Plate", "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", - "item.ragium.circuit_board": "Circuit Board", "item.ragium.circuit_chip": "Circuit Chip", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_dust": "Coal Dust", @@ -266,6 +269,7 @@ "item.ragium.netherite_nugget": "Netherite Nugget", "item.ragium.niter_dust": "Niter Dust", "item.ragium.nitric_acid_bucket": "Nitric Acid Bucket", + "item.ragium.nitrogen_bucket": "Nitrogen Bucket", "item.ragium.obsidian_dust": "Obsidian Dust", "item.ragium.ominous_flux_bucket": "Ominous Flux Bucket", "item.ragium.orange_dye_bucket": "Orange Dye Bucket", @@ -423,6 +427,7 @@ "tag.fluid.c.molten_redstone": "Destabilized Redstone", "tag.fluid.c.naphtha": "Naphtha", "tag.fluid.c.nitric_acid": "Nitric Acid", + "tag.fluid.c.nitrogen": "Nitrogen", "tag.fluid.c.ominous_flux": "Ominous Flux", "tag.fluid.c.oxygen": "Oxygen", "tag.fluid.c.resin": "Resin", @@ -470,6 +475,7 @@ "tag.item.c.buckets.molten_redstone": "Destabilized Redstone Bucket", "tag.item.c.buckets.naphtha": "Naphtha Bucket", "tag.item.c.buckets.nitric_acid": "Nitric Acid Bucket", + "tag.item.c.buckets.nitrogen": "Nitrogen Bucket", "tag.item.c.buckets.ominous_flux": "Ominous Flux Bucket", "tag.item.c.buckets.oxygen": "Oxygen Bucket", "tag.item.c.buckets.resin": "Resin Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index a605808d4..b135e0ea9 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -87,6 +87,7 @@ "block.ragium.nether_sulfur_ore": "ネザー硫黄鉱石", "block.ragium.niter_ore": "硝石鉱石", "block.ragium.nitric_acid": "硝酸", + "block.ragium.nitrogen": "窒素", "block.ragium.ominous_flux": "不吉な流動体", "block.ragium.orange_dye": "橙色の染料", "block.ragium.ore_slurry": "無効な鉱石泥", @@ -187,6 +188,7 @@ "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", "item.minecraft.tipped_arrow.effect.nausea": "吐き気の矢", "item.minecraft.tipped_arrow.effect.wither": "衰退の矢", + "item.ragium.alclad_plate": "アルクラッド板", "item.ragium.alumina_dust": "アルミナの粉", "item.ragium.alumina_solution_bucket": "アルミナ水溶液入りバケツ", "item.ragium.aluminum_ingot": "アルミニウムインゴット", @@ -207,10 +209,11 @@ "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", "item.ragium.carbon_dust": "炭素の粉", + "item.ragium.carbon_fiber": "炭素繊維", + "item.ragium.cfrp_plate": "炭素繊維強化プラスチック板", "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", - "item.ragium.circuit_board": "回路基板", "item.ragium.circuit_chip": "回路チップ", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", @@ -266,6 +269,7 @@ "item.ragium.netherite_nugget": "ネザライトナゲット", "item.ragium.niter_dust": "硝石の粉", "item.ragium.nitric_acid_bucket": "硝酸入りバケツ", + "item.ragium.nitrogen_bucket": "窒素入りバケツ", "item.ragium.obsidian_dust": "黒曜石の粉", "item.ragium.ominous_flux_bucket": "不吉な流動体入りバケツ", "item.ragium.orange_dye_bucket": "橙色の染料入りバケツ", @@ -423,6 +427,7 @@ "tag.fluid.c.molten_redstone": "励起レッドストーン", "tag.fluid.c.naphtha": "ナフサ", "tag.fluid.c.nitric_acid": "硝酸", + "tag.fluid.c.nitrogen": "窒素", "tag.fluid.c.ominous_flux": "不吉な流動体", "tag.fluid.c.oxygen": "酸素", "tag.fluid.c.resin": "樹脂", @@ -470,6 +475,7 @@ "tag.item.c.buckets.molten_redstone": "励起レッドストーン入りバケツ", "tag.item.c.buckets.naphtha": "ナフサ入りバケツ", "tag.item.c.buckets.nitric_acid": "硝酸入りバケツ", + "tag.item.c.buckets.nitrogen": "窒素入りバケツ", "tag.item.c.buckets.ominous_flux": "不吉な流動体入りバケツ", "tag.item.c.buckets.oxygen": "酸素入りバケツ", "tag.item.c.buckets.resin": "樹脂入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/circuit_board.json b/src/generated/resources/assets/ragium/models/item/alclad_plate.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/circuit_board.json rename to src/generated/resources/assets/ragium/models/item/alclad_plate.json index 7ab696f84..1bfef98d0 100644 --- a/src/generated/resources/assets/ragium/models/item/circuit_board.json +++ b/src/generated/resources/assets/ragium/models/item/alclad_plate.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/circuit_board" + "layer0": "ragium:item/alclad_plate" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/carbon_fiber.json b/src/generated/resources/assets/ragium/models/item/carbon_fiber.json new file mode 100644 index 000000000..3e544adc1 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/carbon_fiber.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/carbon_fiber" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cfrp_plate.json b/src/generated/resources/assets/ragium/models/item/cfrp_plate.json new file mode 100644 index 000000000..bd333972c --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cfrp_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cfrp_plate" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/gaseous.json b/src/generated/resources/data/c/tags/fluid/gaseous.json index 1f94bcb1d..6ce4deb51 100644 --- a/src/generated/resources/data/c/tags/fluid/gaseous.json +++ b/src/generated/resources/data/c/tags/fluid/gaseous.json @@ -4,6 +4,7 @@ "#c:hydrogen", "#c:hydrogen_chloride", "#c:hydrogen_fluoride", + "#c:nitrogen", "#c:oxygen", "#c:sulfur_dioxide", "#c:sulfur_trioxide" diff --git a/src/generated/resources/data/c/tags/fluid/nitrogen.json b/src/generated/resources/data/c/tags/fluid/nitrogen.json new file mode 100644 index 000000000..15f7aadae --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/nitrogen.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:nitrogen" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 8356214c7..735e4cb61 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -37,6 +37,7 @@ "#c:buckets/molten_redstone", "#c:buckets/naphtha", "#c:buckets/nitric_acid", + "#c:buckets/nitrogen", "#c:buckets/ominous_flux", "#c:buckets/ore_slurry", "#c:buckets/oxygen", diff --git a/src/generated/resources/data/c/tags/item/buckets/nitrogen.json b/src/generated/resources/data/c/tags/item/buckets/nitrogen.json new file mode 100644 index 000000000..c44e29e2e --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/nitrogen.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:nitrogen_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json b/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json deleted file mode 100644 index 6b98f7f56..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/gold", - "c:ingots/gold" - ] - } - }, - "ingredient": { - "count": 1, - "items": "#c:plastics" - }, - "result": { - "count": 1, - "id": "ragium:circuit_board" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json b/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json new file mode 100644 index 000000000..65fbd5a46 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:assembling", + "extra": { + "count": 1, + "items": "#c:ingots/copper" + }, + "ingredient": { + "count": 3, + "items": "#c:ingots/aluminum" + }, + "result": { + "count": 4, + "id": "ragium:alclad_plate" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json index aa1faac67..8789c0a1b 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json @@ -1,12 +1,18 @@ { "type": "ragium:assembling", - "extra": { - "count": 1, - "items": "ragium:circuit_board" - }, + "extras": [ + { + "count": 2, + "items": "ragium:circuit_chip" + }, + { + "count": 3, + "items": "#c:nuggets/gold" + } + ], "ingredient": { - "count": 2, - "items": "ragium:circuit_chip" + "count": 1, + "items": "#c:plastics" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json index 73392ae26..caf56f428 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json @@ -1,12 +1,18 @@ { "type": "ragium:assembling", - "extra": { - "count": 1, - "items": "ragium:electric_circuit" - }, + "extras": [ + { + "count": 2, + "items": "ragium:circuit_chip" + }, + { + "count": 3, + "items": "#c:nuggets/gold" + } + ], "ingredient": { - "count": 2, - "items": "#c:ingots/void_metal" + "count": 1, + "items": "ragium:cfrp_plate" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json index e7be79da0..b0c15b852 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts_by_black_metal.json @@ -5,7 +5,7 @@ "items": "ragium:electric_circuit" }, "ingredient": { - "count": 4, + "count": 2, "items": "#c:ingots/black_steel" }, "result": { diff --git a/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json b/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json new file mode 100644 index 000000000..0f1f140f3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/cfrp_plate.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "ragium:carbon_fiber" + }, + "result": { + "count": 1, + "id": "ragium:cfrp_plate" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json index ce949af4c..328d05aa3 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json +++ b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/void_metal", + "A": "ragium:alclad_plate", "B": "ragium:electronics_machine_parts", "C": "#c:gears/diamond", "D": "#minecraft:lightning_rods" diff --git a/src/generated/resources/data/ragium/recipe/shaped/enchanter.json b/src/generated/resources/data/ragium/recipe/shaped/enchanter.json index b1130e35a..53c0c62d9 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/enchanter.json +++ b/src/generated/resources/data/ragium/recipe/shaped/enchanter.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/void_metal", + "A": "minecraft:ghast_tear", "B": "ragium:arcane_machine_parts", "C": "#c:gears/netherite", "D": "minecraft:enchanting_table" diff --git a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json index c7ebde1de..92293a8da 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json +++ b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "#c:nuggets/void_metal", + "A": "ragium:alclad_plate", "B": "ragium:electronics_machine_parts", "C": "#c:gears/diamond", "D": "ragium:assembler" diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 53d56d8e4..2315c110d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -98,6 +98,7 @@ internal data object RagiumCommon { setChemical(RagiumFluids.MOLTEN_GLASS, RagiumChemicals.SILICON_DIOXIDE) setChemical(RagiumFluids.HYDROGEN, RagiumChemicals.HYDROGEN) + setChemical(RagiumFluids.NITROGEN, RagiumChemicals.NITROGEN) setChemical(RagiumFluids.OXYGEN, RagiumChemicals.OXYGEN) setChemical(RagiumFluids.CHLORINE, RagiumChemicals.CHLORINE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index a7abc7575..00576ad08 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -130,6 +130,9 @@ data object RagiumFluids { val HYDROGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("hydrogen") { properties = gaseous() } // 3rd + @JvmField + val NITROGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("nitrogen") { properties = gaseous() } + @JvmField val OXYGEN: HTFluidContent.Virtual = REGISTER.registerVirtual("oxygen") { properties = gaseous() } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index ca456043a..4304834a6 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -159,6 +159,15 @@ data object RagiumItems { @JvmField val SYNTHETIC_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_fiber") + @JvmField + val CARBON_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("carbon_fiber") + + @JvmField + val CFRP_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cfrp_plate") + + @JvmField + val ALCLAD_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("alclad_plate") + // Bio @JvmField val BEESWAX: HTSimpleDeferredItem = REGISTER.registerItem("beeswax", ::HoneycombItem) @@ -181,9 +190,6 @@ data object RagiumItems { @JvmField val CIRCUIT_CHIP: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_chip") - @JvmField - val CIRCUIT_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_board") - @JvmField val ELECTRIC_CIRCUIT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("electric_circuit") diff --git a/src/main/resources/assets/ragium/textures/item/alclad_plate.png b/src/main/resources/assets/ragium/textures/item/alclad_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..af3e7500bcf157f047f65d62dc4212cca481f758 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Pdr^5Ln;`bOxVcB=qS+k{K}Ui zn+Ct7AuG3N?G?Y!?Pa3%zTx-+MWIe@kwyCpmIrd!{xqBEyQcK)RK1^@t#^N}Exy_G zjJF%i65BH7`11Wo)Nt!ODe^iVe?ICnl+W@#C7ds+6_gHckq?_?RSkvI7+MliDaHN%i^Y0Vq1B{dIrsSy^_NMWE&)dghqH(}$ xuIPFN?t=G4-1mUq{Quw8p{xSPU<3J=nZfTxzv3*dz(qh222WQ%mvv4FO#teLcTWHS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/carbon_fiber.png b/src/main/resources/assets/ragium/textures/item/carbon_fiber.png new file mode 100644 index 0000000000000000000000000000000000000000..54692e0bf7150bf547fd47ef073f7038cdabd31d GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k33x*Ln;`TT-wOjY{0{EVT-Xb zw={SB!TJI{kgsm=F0t>#k?%jDr@sBre~FQ-)j9|SuW8` zxV>%5y4Tr}(>B|ivL5-e?)5w7tn6c7IJAQ6%nAaxno71b*vax0HJnrv$P{?E=#j&G zzw?&tM_d(6JAJyN*fzH>e{ w-ez!G)==EZ5A@{!|3^eCvw;jYkZ+k8LLT2!LU*vx3e~tzqU4 zc)e@dw%pcJwrwm7&cbO3}@H9F1cL&;!DeR|d-tADL@YW;-V+bOfu4!+)d-IeRX7w)8mg)*u0(k=U(Ijo;^6)_$-s&IPK3$<-W z6`MHhe=%HOxb%H*UXpa0@aKql1|G2mMdvj+Pq03^nR Date: Sat, 26 Sep 2026 21:16:58 +0900 Subject: [PATCH 11/38] =?UTF-8?q?refactor:=20RagiumMaterial.Alloy=20?= =?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 --- .../advancement/RagiumAdvancementProvider.kt | 4 +- .../ragium/data/lang/RagiumLangProvider.kt | 2 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 4 +- .../data/recipe/RagiumHeatRecipeProvider.kt | 12 ++-- .../recipe/RagiumMechanicalRecipeProvider.kt | 3 +- .../recipe/RagiumVanillaRecipeProvider.kt | 61 +++++++++++-------- .../ragium/data/tag/RagiumItemTagsProvider.kt | 2 +- .../ragium/api/material/RagiumMaterial.kt | 45 +++++++------- .../ragium/common/block/RagiumBlocks.kt | 10 +-- .../ragium/common/item/RagiumItems.kt | 17 +++--- 10 files changed, 87 insertions(+), 73 deletions(-) diff --git a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt index eb764034d..b040367e4 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/advancement/RagiumAdvancementProvider.kt @@ -78,7 +78,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumAdvancementKeys.SOOTY_IRON, RagiumAdvancementKeys.ROOT, HTItemPart.INGOT, - RagiumMaterial.Metal.SOOTY_IRON + RagiumMaterial.Alloy.SOOTY_IRON ) // Mechanical createSimple( @@ -113,7 +113,7 @@ class RagiumAdvancementProvider(packOutput: PackOutput, future: CompletableFutur RagiumAdvancementKeys.BLACK_STEEL, RagiumAdvancementKeys.ALLOY_SMELTER, HTItemPart.INGOT, - RagiumMaterial.Metal.BLACK_STEEL + RagiumMaterial.Alloy.BLACK_STEEL ) createSimple( RagiumAdvancementKeys.FREEZER, diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 58ad033ce..8c4c94c01 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -61,7 +61,7 @@ interface RagiumLangProvider { provider.add(parts, partsPattern, machineType) } for (toolType: HTToolType in HTToolType.entries) { - provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Metal.SOOTY_IRON) + provider.add(RagiumItems.SOOTY_IRON_TOOLS[toolType], toolType, RagiumMaterial.Alloy.SOOTY_IRON) } // Text // API - Constants diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 12016610b..cd9c55bbe 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -231,7 +231,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.COLORED_RESINS.black) amount /= 4 }*/ - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } } } @@ -631,7 +631,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Machine Parts RagiumRecipeBuilders.assembling { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) count = 2 } extra { items { +RagiumItems.ELECTRIC_CIRCUIT } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index c99252298..9bcf6753c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -66,7 +66,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture // Machine Casing RagiumRecipeBuilders.alloying { ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) count = 2 } extra { +dustOrIngot(RagiumMaterial.Metal.GOLD) } @@ -84,7 +84,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture ) ) } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } recipeId suffix "_by_coals" }.save(exporter) // 2x Iron + Cokes -> 2x Sooty Iron @@ -95,19 +95,19 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } extra { +holderSet(RagiumTags.Items.COKES) } result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) count = 2 } recipeId suffix "_by_cokes" }.save(exporter) // Sooty Iron + Obsidian Dust -> Black Steel RagiumRecipeBuilders.alloying { - ingredient { +dustOrIngot(RagiumMaterial.Metal.SOOTY_IRON) } + ingredient { +dustOrIngot(RagiumMaterial.Alloy.SOOTY_IRON) } extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) count = 2 } - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } }.save(exporter) // Aluminum + Copper + Obsidian Dust -> Black Steel RagiumRecipeBuilders.alloying { @@ -118,7 +118,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture extra { +dustOrIngot(RagiumMaterial.Metal.COPPER) } extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.BLACK_STEEL) + +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) count = 4 } recipeId replace id("obzinite_ingot") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index a693b4dbb..49041a691 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -545,7 +545,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { + for (metal: RagiumMaterial in RagiumMaterial.Metal.entries + RagiumMaterial.Alloy.entries) { val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.INGOT, metal) } @@ -733,7 +733,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) // Raw XX -> XX Dust for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - if (!metal.hasRawVariant) continue val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue RagiumRecipeBuilders.crushing { ingredient { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 77489128d..0a8bf5224 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -234,7 +234,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"A A" +"ABA" +" A " - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(Tags.Items.CHESTS_WOODEN) } result { +Items.HOPPER @@ -246,7 +246,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"A A" +"ABA" +" A " - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } define('B') { +holderSet(Tags.Items.CHESTS_WOODEN) } result { +Items.HOPPER @@ -262,7 +262,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Mechanical VanillaRecipeBuilders.shaped { layered2() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } result { +RagiumItems.getParts(HTMachineType.MECHANICAL) @@ -303,8 +303,8 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"ABA" +"B B" +"ABA" - define('A') { +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Metal.SOOTY_IRON) } - define('B') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Alloy.SOOTY_IRON) } + define('B') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } result { +RagiumBlocks.MACHINE_CASING count = 4 @@ -341,7 +341,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun mechanical(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.MECHANICAL, - RagiumMaterial.Metal.SOOTY_IRON, + RagiumMaterial.Alloy.SOOTY_IRON, RagiumMaterial.Metal.COPPER, result, builderAction @@ -351,7 +351,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun heat(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.HEAT, - RagiumMaterial.Metal.SOOTY_IRON, + RagiumMaterial.Alloy.SOOTY_IRON, RagiumMaterial.Metal.IRON, result, builderAction @@ -361,7 +361,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun chemical(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.CHEMICAL, - RagiumMaterial.Metal.BLACK_STEEL, + RagiumMaterial.Alloy.BLACK_STEEL, RagiumMaterial.Metal.GOLD, result, builderAction @@ -371,7 +371,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private inline fun bio(result: HTSimpleDeferredBlockAndItem, builderAction: IngredientBuilder.() -> Unit) { machine( HTMachineType.BIO, - RagiumMaterial.Metal.BLACK_STEEL, + RagiumMaterial.Alloy.BLACK_STEEL, RagiumMaterial.Gem.EMERALD, result, builderAction @@ -398,7 +398,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"ADA" define('A') { items { +Items.GHAST_TEAR } } define('B') { items { +RagiumItems.getParts(HTMachineType.ARCANE) } } - define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Metal.NETHERITE) } + define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Alloy.NETHERITE) } define('D', builderAction) result { +result } }.save(exporter) @@ -410,14 +410,14 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Tank VanillaRecipeBuilders.shaped { hollow8() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.SOOTY_IRON) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.TANK } recipeId suffix "_by_sooty_iron" }.save(exporter) VanillaRecipeBuilders.shaped { hollow4() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.BLACK_STEEL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.TANK } recipeId suffix "_by_black_steel" @@ -425,7 +425,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Void Tank VanillaRecipeBuilders.shaped { hollow8() - define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.VOID_METAL) } + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.VOID_METAL) } define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } result { +RagiumBlocks.VOID_TANK } }.save(exporter) @@ -446,15 +446,15 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut registerStairsRecipes(RagiumBlocks.CRYOLITE_STAIRS, Ingredient.of(RagiumBlocks.CRYOLITE_BLOCK)) nineToBlock(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.SOOTY_IRON, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.BLACK_STEEL, HTItemPart.INGOT) - nineToBlock(RagiumMaterial.Metal.VOID_METAL, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT) + nineToBlock(RagiumMaterial.Alloy.VOID_METAL, HTItemPart.INGOT) // Ingot <-> Nugget - ingotToNugget(RagiumMaterial.Metal.NETHERITE, ingot = HTSimpleDeferredItem(vanillaId("netherite_ingot"))) ingotToNugget(RagiumMaterial.Metal.ALUMINUM) - ingotToNugget(RagiumMaterial.Metal.SOOTY_IRON) - ingotToNugget(RagiumMaterial.Metal.BLACK_STEEL) - ingotToNugget(RagiumMaterial.Metal.VOID_METAL) + ingotToNugget(RagiumMaterial.Alloy.NETHERITE, ingot = HTSimpleDeferredItem(vanillaId("netherite_ingot"))) + ingotToNugget(RagiumMaterial.Alloy.SOOTY_IRON) + ingotToNugget(RagiumMaterial.Alloy.BLACK_STEEL) + ingotToNugget(RagiumMaterial.Alloy.VOID_METAL) // Gear RagiumItems.getOrThrow(HTItemPart.GEAR, RagiumMaterial.Other.WOOD).let { gear: HTSimpleDeferredItem -> VanillaRecipeBuilders.shaped { @@ -469,11 +469,11 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) gear(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.GOLD) - RagiumItems.MATERIAL_ITEMS[HTItemPart.GEAR, RagiumMaterial.Metal.NETHERITE]?.let { + RagiumItems.MATERIAL_ITEMS[HTItemPart.GEAR, RagiumMaterial.Alloy.NETHERITE]?.let { VanillaRecipeBuilders.smithing { template { items { +Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE } } base { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Gem.DIAMOND) } - addition { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.NETHERITE) } + addition { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.NETHERITE) } result { +it } }.save(exporter) } @@ -484,7 +484,6 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_ingot")) RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_ingot")) RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_ingot")) - RagiumMaterial.Metal.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) else -> RagiumItems.MATERIAL_ITEMS[HTItemPart.INGOT, metal] } ?: continue VanillaRecipeBuilders.smeltingAndBlasting(exporter) { @@ -495,6 +494,20 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut recipeId suffix "_from_dust" } } + for (alloy: RagiumMaterial.Alloy in RagiumMaterial.Alloy.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, alloy] ?: continue + val item: HTSimpleDeferredItem = when (alloy) { + RagiumMaterial.Alloy.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) + else -> RagiumItems.MATERIAL_ITEMS[HTItemPart.INGOT, alloy] + } ?: continue + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { items { +dust } } + result { +item } + exp = 0.35f + group = item.id.path + recipeId suffix "_from_dust" + } + } // Fuel for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { val base: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) @@ -521,7 +534,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Sooty Iron val ironIngot: HolderSet = holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.IRON) val sootyIronIngot: HTSimpleDeferredItem = - RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.SOOTY_IRON) + RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) VanillaRecipeBuilders.shaped { hollow8() define('A') { diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 23f971ba4..bc14d6762 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -53,7 +53,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu } builder(RagiumTags.Items.SOOTY_IRON_TOOL_MATERIALS) - .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Metal.SOOTY_IRON)) + .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Alloy.SOOTY_IRON)) // Other builder(ItemTags.SLABS) .add(RagiumBlocks.FLUORITE_SLAB) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 22bb335d6..87575c2ae 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -16,6 +16,7 @@ sealed interface RagiumMaterial : yieldAll(Mineral.entries) yieldAll(Gem.entries) yieldAll(Metal.entries) + yieldAll(Alloy.entries) yieldAll(Other.entries) } @@ -52,12 +53,8 @@ sealed interface RagiumMaterial : RagiumMaterial, HTLangName by langName { // Minecraft - REDSTONE("Redstone", "レッドストーン") { - override val isVanilla: Boolean = true - }, - GLOWSTONE("Glowstone", "グロウストーン") { - override val isVanilla: Boolean = true - }, + REDSTONE("Redstone", "レッドストーン"), + GLOWSTONE("Glowstone", "グロウストーン"), // Common SALT("Salt", "食塩", RagiumChemicals.SODIUM_CHLORIDE), @@ -79,7 +76,7 @@ sealed interface RagiumMaterial : chemicalKey ) - open val isVanilla: Boolean = false + val isVanilla: Boolean get() = this == REDSTONE || this == GLOWSTONE override val materialName: String = name.lowercase() } @@ -124,39 +121,45 @@ sealed interface RagiumMaterial : COPPER("Copper", "銅", RagiumChemicals.COPPER), IRON("Iron", "鉄", RagiumChemicals.IRON), GOLD("Gold", "金", RagiumChemicals.GOLD), - NETHERITE("Netherite", "ネザライト") { - override val hasRawVariant: Boolean = false - }, // Common /** * @since 26.1.7 */ - ALUMINUM("Aluminum", "アルミニウム", RagiumChemicals.ALUMINUM), + ALUMINUM("Aluminum", "アルミニウム", RagiumChemicals.ALUMINUM) + ; + + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + override val materialName: String = name.lowercase() + } + + enum class Alloy(langName: HTLangName, override val chemicalKey: ResourceKey?) : + RagiumMaterial, + HTLangName by langName { + // Minecraft + NETHERITE("Netherite", "ネザライト"), // Ragium /** * @since 26.1.3 */ - SOOTY_IRON("Sooty Iron", "煤鉄") { - override val hasRawVariant: Boolean = false - }, + SOOTY_IRON("Sooty Iron", "煤鉄"), /** * @since 26.1.3 */ - BLACK_STEEL("Black Steel", "黒鋼") { - override val hasRawVariant: Boolean = false - }, + BLACK_STEEL("Black Steel", "黒鋼"), /** * @since 26.1.4 */ - VOID_METAL("Void Metal", "虚金") { - override val hasRawVariant: Boolean = false - } + VOID_METAL("Void Metal", "虚金") ; constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( @@ -164,8 +167,6 @@ sealed interface RagiumMaterial : chemicalKey ) - open val hasRawVariant: Boolean = true - override val materialName: String = name.lowercase() } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 08307562f..e36e87622 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -155,9 +155,9 @@ data object RagiumBlocks { RagiumMaterial.Fuel.COAL_COKE to copyOf(Blocks.COAL_BLOCK).mapColor(MapColor.COLOR_GRAY), RagiumMaterial.Fuel.PITCH_COKE to copyOf(Blocks.COAL_BLOCK).mapColor(MapColor.COLOR_BLUE), RagiumMaterial.Metal.ALUMINUM to copyOf(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_PINK), - RagiumMaterial.Metal.SOOTY_IRON to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_GRAY), - RagiumMaterial.Metal.BLACK_STEEL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_BLACK), - RagiumMaterial.Metal.VOID_METAL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.TERRACOTTA_BLUE) + RagiumMaterial.Alloy.SOOTY_IRON to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_GRAY), + RagiumMaterial.Alloy.BLACK_STEEL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.COLOR_BLACK), + RagiumMaterial.Alloy.VOID_METAL to copyOf(Blocks.IRON_BLOCK).mapColor(MapColor.TERRACOTTA_BLUE) ).associateTo( sortedMapOf(RagiumMaterial.COMPARATOR) ) { (material: RagiumMaterial, properties: BlockBehaviour.Properties) -> @@ -449,8 +449,8 @@ data object RagiumBlocks { private fun modifyDefaultComponents(event: ModifyDefaultComponentsEvent) { // Block setOf( - RagiumMaterial.Metal.BLACK_STEEL to Rarity.UNCOMMON, - RagiumMaterial.Metal.VOID_METAL to Rarity.RARE + RagiumMaterial.Alloy.BLACK_STEEL to Rarity.UNCOMMON, + RagiumMaterial.Alloy.VOID_METAL to Rarity.RARE ).forEach { (material: RagiumMaterial, rarity: Rarity) -> for (part: HTBlockPart in HTBlockPart.entries) { val block: ItemLike = MATERIAL_BLOCKS[part, material] ?: continue diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 4304834a6..7b9253502 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -82,11 +82,12 @@ data object RagiumItems { putAll(RagiumMaterial.Metal.COPPER, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Metal.IRON, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Metal.GOLD, HTItemPart.DUST, HTItemPart.GEAR) - putAll(RagiumMaterial.Metal.NETHERITE, HTItemPart.DUST, HTItemPart.GEAR, HTItemPart.NUGGET) putAll(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.SOOTY_IRON, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.BLACK_STEEL, HTItemPart.INGOT, HTItemPart.NUGGET) - putAll(RagiumMaterial.Metal.VOID_METAL, HTItemPart.INGOT, HTItemPart.NUGGET) + // Alloy + putAll(RagiumMaterial.Alloy.NETHERITE, HTItemPart.DUST, HTItemPart.GEAR, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT, HTItemPart.NUGGET) + putAll(RagiumMaterial.Alloy.VOID_METAL, HTItemPart.INGOT, HTItemPart.NUGGET) // Other putAll(RagiumMaterial.Other.WOOD, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Other.GLASS, HTItemPart.DUST) @@ -105,11 +106,11 @@ data object RagiumItems { REGISTER.registerSimpleItem(part.createName(material)) { properties: Item.Properties -> when (material) { RagiumMaterial.Mineral.RAGINITE -> Rarity.EPIC - RagiumMaterial.Metal.BLACK_STEEL -> Rarity.UNCOMMON - RagiumMaterial.Metal.VOID_METAL -> Rarity.RARE + RagiumMaterial.Alloy.BLACK_STEEL -> Rarity.UNCOMMON + RagiumMaterial.Alloy.VOID_METAL -> Rarity.RARE else -> null }?.let(properties::rarity) - if (material == RagiumMaterial.Metal.NETHERITE) { + if (material == RagiumMaterial.Alloy.NETHERITE) { properties.fireResistant() } material.chemicalKey?.let { @@ -233,7 +234,7 @@ data object RagiumItems { @JvmField val SOOTY_IRON_TOOLS: HTToolCollection = HTToolCollection { toolType: HTToolType -> REGISTER.registerItem( - toolType.createPath(RagiumMaterial.Metal.SOOTY_IRON), + toolType.createPath(RagiumMaterial.Alloy.SOOTY_IRON), { prop: Item.Properties -> toolType.createItem(prop, RagiumToolMaterials.SOOTY_IRON, 6f, -3.1f, -2f, -1f) } ) } From 3107f2922c53539ad8cdcdb73a8fd9cbf7eb15a9 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 27 Sep 2026 00:49:15 +0900 Subject: [PATCH 12/38] =?UTF-8?q?feat:=20=E3=82=A2=E3=83=AB=E3=82=AB?= =?UTF-8?q?=E3=83=AA=E5=B7=A5=E6=A5=AD=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B?= =?UTF-8?q?=E8=A6=81=E7=B4=A0=E3=82=92=E8=BF=BD=E5=8A=A0=20-=20Fluid=20=20?= =?UTF-8?q?=20-=20Carbon=20Dioxide=20=20=20-=20Calcium=20Hydroxide=20Solut?= =?UTF-8?q?ion=20-=20Item=20=20=20-=20Calcium=20Carbonate=20Dust=20=20=20-?= =?UTF-8?q?=20Calcium=20Oxide=20Dust=20=20=20-=20Cement=20=20=20-=20Mortar?= =?UTF-8?q?=20=20=20-=20Sodium=20Carbonate=20Dust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 8 ++ .../data/lang/RagiumEnglishLangProvider.kt | 6 +- .../data/lang/RagiumJapaneseLangProvider.kt | 6 +- .../recipe/RagiumChemicalRecipeProvider.kt | 42 +------ .../data/recipe/RagiumCommonRecipeProvider.kt | 109 +++++++++++++++--- .../data/recipe/RagiumHeatRecipeProvider.kt | 14 --- .../recipe/RagiumMechanicalRecipeProvider.kt | 16 ++- .../recipe/RagiumVanillaRecipeProvider.kt | 57 +++++---- .../calcium_hydroxide_solution.json | 7 ++ .../ragium/items/calcium_carbonate_dust.json | 6 + .../calcium_hydroxide_solution_bucket.json | 12 ++ .../ragium/items/calcium_oxide_dust.json | 6 + .../ragium/items/carbon_dioxide_bucket.json | 13 +++ .../resources/assets/ragium/items/cement.json | 6 + .../resources/assets/ragium/items/mortar.json | 6 + .../ragium/items/sodium_carbonate_dust.json | 6 + .../resources/assets/ragium/lang/en_us.json | 13 +++ .../resources/assets/ragium/lang/ja_jp.json | 13 +++ .../block/calcium_hydroxide_solution.json | 5 + .../models/item/calcium_carbonate_dust.json | 6 + .../models/item/calcium_oxide_dust.json | 6 + .../assets/ragium/models/item/cement.json | 6 + .../assets/ragium/models/item/mortar.json | 6 + .../models/item/sodium_carbonate_dust.json | 6 + .../fluid/calcium_hydroxide_solution.json | 6 + .../data/c/tags/fluid/carbon_dioxide.json | 5 + .../resources/data/c/tags/fluid/gaseous.json | 1 + .../resources/data/c/tags/item/buckets.json | 2 + .../buckets/calcium_hydroxide_solution.json | 5 + .../c/tags/item/buckets/carbon_dioxide.json | 5 + .../resources/data/c/tags/item/dusts.json | 3 + .../c/tags/item/dusts/calcium_carbonate.json | 5 + .../data/c/tags/item/dusts/calcium_oxide.json | 5 + .../c/tags/item/dusts/sodium_carbonate.json | 5 + .../data/ragium/recipe/alloying/glass.json | 16 +++ .../recipe/alloying/obzinite_ingot.json | 34 ------ ...{salt_dust_from_block.json => mortar.json} | 8 +- .../ragium/recipe/bathing/tinted_glass.json | 22 ---- .../recipe/blasting/calcium_oxide_dust.json | 10 ++ .../blasting/sodium_carbonate_dust.json | 10 ++ .../calcium_carbonate_dust_from_calcite.json | 12 ++ .../mixing/calcium_hydroxide_solution.json | 16 +++ .../recipe/pyrolyzing/calcium_oxide_dust.json | 16 +++ .../calcium_carbonate_dust_from_solution.json | 20 ++++ .../sodium_carbonate_dust_from_solution.json | 20 ++++ .../data/ragium/recipe/shaped/bricks.json | 15 +++ .../ragium/recipe/shaped/nether_bricks.json | 15 +++ .../data/ragium/recipe/shapeless/cement.json | 12 ++ .../data/ragium/recipe/shapeless/mortar.json | 15 +++ .../recipe/smelting/calcium_oxide_dust.json | 10 ++ .../smelting/sodium_carbonate_dust.json | 10 ++ .../ragium/api/material/RagiumMaterial.kt | 99 ++++++++++++---- .../ragium/common/fluid/RagiumFluids.kt | 10 +- .../ragium/common/item/RagiumItems.kt | 27 +++-- .../common/material/RagiumMaterialHelper.kt | 39 ++++++- .../textures/item/calcium_carbonate_dust.png | Bin 0 -> 267 bytes .../textures/item/calcium_oxide_dust.png | Bin 0 -> 267 bytes .../textures/item/sodium_carbonate_dust.png | Bin 0 -> 267 bytes 58 files changed, 665 insertions(+), 194 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json create mode 100644 src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json create mode 100644 src/generated/resources/assets/ragium/items/calcium_oxide_dust.json create mode 100644 src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json create mode 100644 src/generated/resources/assets/ragium/items/cement.json create mode 100644 src/generated/resources/assets/ragium/items/mortar.json create mode 100644 src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json create mode 100644 src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json create mode 100644 src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json create mode 100644 src/generated/resources/assets/ragium/models/item/cement.json create mode 100644 src/generated/resources/assets/ragium/models/item/mortar.json create mode 100644 src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json create mode 100644 src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/data/c/tags/fluid/carbon_dioxide.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/glass.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json rename src/generated/resources/data/ragium/recipe/bathing/{salt_dust_from_block.json => mortar.json} (59%) delete mode 100644 src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json create mode 100644 src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json create mode 100644 src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/bricks.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json create mode 100644 src/generated/resources/data/ragium/recipe/shapeless/cement.json create mode 100644 src/generated/resources/data/ragium/recipe/shapeless/mortar.json create mode 100644 src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json create mode 100644 src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png create mode 100644 src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png create mode 100644 src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 28c10722f..133e229f2 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -139,6 +139,10 @@ data object RagiumClient : HTClientMod() { colorTint(Color(0x99cc33)) } + register.register(RagiumFluids.CARBON_DIOXIDE) { + transparent() + colorTint(Color(0x336699)) + } register.register(RagiumFluids.WOOD_TAR) { molten() colorTint(Color(0x663333)) @@ -224,6 +228,10 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0xccff99)) } + register.register(RagiumFluids.CAOH_SOLUTION) { + dull() + colorTint(Color(0x333399)) + } register.register(RagiumFluids.ORE_SLURRY) { still = Material(vanillaId(HTConstants.BLOCK, "white_concrete_powder")) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index f755d8344..6ab1afde8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -100,6 +100,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.OXYGEN, "Oxygen") addFluid(RagiumFluids.CHLORINE, "Chlorine") + addFluid(RagiumFluids.CARBON_DIOXIDE, "Carbon Dioxide") addFluid(RagiumFluids.WOOD_TAR, "Wood Tar") addFluid(RagiumFluids.COAL_TAR, "Coal Tar") addFluid(RagiumFluids.AROMATIC_COMPOUND, "Aromatic Compound") @@ -121,13 +122,16 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") addFluid(RagiumFluids.BLEACH, "Bleach") + addFluid(RagiumFluids.CAOH_SOLUTION, "Calcium Hydroxide Solution") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") // Item add(RagiumItems.BAMBOO_CHARCOAL, "Bamboo Charcoal") - add(RagiumItems.TAR, "Tar") add(RagiumItems.PARTICLE_BOARD, "Particle Board") + add(RagiumItems.CEMENT, "Cement") + add(RagiumItems.MORTAR, "Mortar") + add(RagiumItems.TAR, "Tar") add(RagiumItems.PLASTIC_PLATE, "Plastic Plate") add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 8f685db6c..f101ab3c6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -96,6 +96,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.OXYGEN, "酸素") addFluid(RagiumFluids.CHLORINE, "塩素") + addFluid(RagiumFluids.CARBON_DIOXIDE, "二酸化炭素") addFluid(RagiumFluids.WOOD_TAR, "木タール") addFluid(RagiumFluids.COAL_TAR, "石炭タール") addFluid(RagiumFluids.AROMATIC_COMPOUND, "芳香族化合物") @@ -117,13 +118,16 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") addFluid(RagiumFluids.BLEACH, "漂白剤") + addFluid(RagiumFluids.CAOH_SOLUTION, "水酸化カルシウム水溶液") add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") // Item add(RagiumItems.BAMBOO_CHARCOAL, "竹炭") - add(RagiumItems.TAR, "タール") add(RagiumItems.PARTICLE_BOARD, "パーティクルボード") + add(RagiumItems.CEMENT, "セメント") + add(RagiumItems.MORTAR, "モルタル") + add(RagiumItems.TAR, "タール") add(RagiumItems.PLASTIC_PLATE, "プラスチック板") add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 45eb78b79..74df04d61 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -1,59 +1,25 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider -import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders -import hiiragi283.ragium.api.material.HTItemPart -import hiiragi283.ragium.api.material.RagiumMaterial -import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput -import net.minecraft.world.item.Items import java.util.concurrent.CompletableFuture class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { - bathing() - centrifuging() - } - - private fun bathing() { - // Wood Pulp + NaOH aq -> Paper Pulp - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } - fluidIngredient { - +holderSet(RagiumFluids.NAOH_SOLUTION) - amount = 250 - } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.PAPER) } - recipeId suffix "_from_wood" - }.save(exporter) - // Paper Pulp + Water -> Paper + // Cement + Water -> Mortar RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.PAPER) } + itemIngredient { items { +RagiumItems.CEMENT } } fluidIngredient { +waterSet() - amount = 250 + amount /= 4 } - result { +Items.PAPER } - recipeId suffix "_from_pulp" + result { +RagiumItems.MORTAR } }.save(exporter) - - // Molten Glass + Amethyst -> Tinted Glass - RagiumRecipeBuilders.bathing { - itemIngredient { +dustOrGem(RagiumMaterial.Gem.AMETHYST) } - fluidIngredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } - result { - +Items.TINTED_GLASS - count = 2 - } - }.save(exporter) - } - - private fun centrifuging() { } 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 cd9c55bbe..9407bf533 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -3,10 +3,12 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.collection.nelOf import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders import hiiragi283.lib.data.recipe.builder.ingredient import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.RagiumAPI @@ -90,7 +92,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) RagiumRecipeBuilders.pyrolyzing { ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Fuel.COAL) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.CARBON) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) } fluidResult { +RagiumFluids.COAL_TAR amount = 500 @@ -240,6 +242,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu private fun chemical() { colored() + alkali() chlorine() sulfuricAcid() nitricAcid() @@ -297,7 +300,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) // Carbon + Resin -> Black Dye RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.CARBON) } + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CARBON) } fluidIngredient { +holderSet(RagiumTags.Fluids.RESINS) amount /= 4 @@ -307,17 +310,95 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } - private fun chlorine() { - // Dried Kelp + Water -> Salt - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(Tags.Items.STORAGE_BLOCKS_DRIED_KELP) } - fluidIngredient { +waterSet() } + private fun alkali() { + // Dried Kelp -> Na2CO3 + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { items { +Items.DRIED_KELP } } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + exp = 0.15f + } + // 2x NaOH (aq) + CO2 -> Na2CO3 + H2O + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.NAOH_SOLUTION) } + secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } + fluidResult { + +Fluids.WATER + amount *= 2 + } + val dust: HTSimpleDeferredItem = + RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) + itemResult { +dust } + recipeId replace dust.idOrThrow + recipeId suffix "_from_solution" + }.save(exporter) + // SiO2 + Na2CO3 -> Glass + RagiumRecipeBuilders.alloying { + ingredient { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Gem.QUARTZ) + count = 2 + } + extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) + +Items.GLASS count = 6 } - recipeId suffix "_from_block" }.save(exporter) + + // CaCO3 -> CaO + CO2 + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + exp = 0.15f + } + RagiumRecipeBuilders.pyrolyzing { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + fluidResult { +RagiumFluids.CARBON_DIOXIDE } + }.save(exporter) + // CaO + H2O -> Ca(OH)2 (aq) + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + fluidIngredient { +waterSet() } + result { +RagiumFluids.CAOH_SOLUTION } + }.save(exporter) + // Ca(OH)2 (aq) + CO2 -> CaCO3 + H2O + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.CAOH_SOLUTION) } + secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } + fluidResult { + +Fluids.WATER + amount *= 2 + } + val dust: HTSimpleDeferredItem = + RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) + itemResult { +dust } + recipeId replace dust.idOrThrow + recipeId suffix "_from_solution" + }.save(exporter) + + // Wood Pulp + NaOH aq -> Paper Pulp + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } + fluidIngredient { + +holderSet(RagiumFluids.NAOH_SOLUTION) + amount = 250 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.PAPER) } + recipeId suffix "_from_wood" + }.save(exporter) + // Paper Pulp + Water -> Paper + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.PAPER) } + fluidIngredient { + +waterSet() + amount = 250 + } + result { +Items.PAPER } + recipeId suffix "_from_pulp" + }.save(exporter) + } + + private fun chlorine() { // NaCl(aq) -> H2O + NaCl RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.SALT_WATER) } @@ -490,7 +571,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Alumina Solution -> Al2O3 + Water RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.ALUMINA) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } fluidResult { +Fluids.WATER } recipeId replace id("alumina_dust_from_solution") }.save(exporter) @@ -505,7 +586,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) // Al2O3 + Cokes + Na3AlF6 -> Al RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.ALUMINA) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } extra { +holderSet(RagiumTags.Items.COKES) } result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) @@ -514,7 +595,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu time *= 4 }.save(exporter) RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.ALUMINA) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } extra { +holderSet(RagiumTags.Items.COKES) } extra { +dustOrGem(RagiumMaterial.Gem.CRYOLITE) } result { @@ -595,12 +676,12 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.HYDROCHLORIC_ACID) amount = 125 } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.SILICON) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SILICON) } }.save(exporter) // Si Dust + Redstone -> Silicon Wafer RagiumRecipeBuilders.alloying { ingredient { - +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.SILICON) + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SILICON) count = 8 } extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.RAGINITE) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 9bcf6753c..d67f648fb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -109,20 +109,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } }.save(exporter) - // Aluminum + Copper + Obsidian Dust -> Black Steel - RagiumRecipeBuilders.alloying { - ingredient { - +dustOrIngot(RagiumMaterial.Metal.ALUMINUM) - count = 3 - } - extra { +dustOrIngot(RagiumMaterial.Metal.COPPER) } - extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.OBSIDIAN) } - result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) - count = 4 - } - recipeId replace id("obzinite_ingot") - }.save(exporter) } private fun freezing() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 49041a691..7419a5019 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -379,7 +379,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable // XX Dust -> XX for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { - val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) + val baseItem: HTSimpleDeferredItem = RagiumMaterialHelper.getBase(fuel) RagiumRecipeBuilders.compressing { ingredient { +holderSet(CommonTagPrefixes.DUST, fuel) } result { +baseItem } @@ -533,7 +533,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) RagiumRecipeBuilders.crushing { ingredient { +holderSet(RagiumTags.Items.COKES) } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Other.CARBON) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) } }.save(exporter) for (gem: RagiumMaterial.Gem in RagiumMaterial.Gem.entries) { @@ -545,10 +545,10 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - for (metal: RagiumMaterial in RagiumMaterial.Metal.entries + RagiumMaterial.Alloy.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue + for (metalLike: RagiumMaterial.MetalLike in RagiumMaterial.MetalLike.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metalLike] ?: continue RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.INGOT, metal) } + ingredient { +holderSet(CommonTagPrefixes.INGOT, metalLike) } result { +dust } recipeId suffix "_from_ingot" }.save(exporter) @@ -666,6 +666,12 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable recipeId suffix "_from_ore" }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { items { +Items.CALCITE } } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } + recipeId suffix "_from_calcite" + }.save(exporter) + RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } result { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 0a8bf5224..93534f945 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -90,6 +90,36 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut count = 4 } }.save(exporter) + // Cement + VanillaRecipeBuilders.shapeless { + ingredient { +holderSet(Tags.Items.SANDS) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + result { + +RagiumItems.CEMENT + count = 2 + } + }.save(exporter) + // Mortar + VanillaRecipeBuilders.shapeless { + ingredient { +holderSet(Tags.Items.BUCKETS_WATER) } + repeat(4) { ingredient { items { +RagiumItems.CEMENT } } } + result { + +RagiumItems.MORTAR + count = 4 + } + }.save(exporter) + VanillaRecipeBuilders.shaped { + mosaic4() + define('A') { +holderSet(Tags.Items.BRICKS_NORMAL) } + define('B') { items { +RagiumItems.MORTAR } } + result { +Items.BRICKS } + }.save(exporter) + VanillaRecipeBuilders.shaped { + mosaic4() + define('A') { +holderSet(Tags.Items.BRICKS_NETHER) } + define('B') { items { +RagiumItems.MORTAR } } + result { +Items.NETHER_BRICKS } + }.save(exporter) // XX Tools registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) @@ -478,28 +508,9 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut }.save(exporter) } // Dust -> Ingot - for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue - val item: HTSimpleDeferredItem = when (metal) { - RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_ingot")) - RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_ingot")) - RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_ingot")) - else -> RagiumItems.MATERIAL_ITEMS[HTItemPart.INGOT, metal] - } ?: continue - VanillaRecipeBuilders.smeltingAndBlasting(exporter) { - ingredient { items { +dust } } - result { +item } - exp = 0.35f - group = item.id.path - recipeId suffix "_from_dust" - } - } - for (alloy: RagiumMaterial.Alloy in RagiumMaterial.Alloy.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, alloy] ?: continue - val item: HTSimpleDeferredItem = when (alloy) { - RagiumMaterial.Alloy.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) - else -> RagiumItems.MATERIAL_ITEMS[HTItemPart.INGOT, alloy] - } ?: continue + for (metalLike: RagiumMaterial.MetalLike in RagiumMaterial.MetalLike.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metalLike] ?: continue + val item: HTSimpleDeferredItem = RagiumMaterialHelper.getIngot(metalLike) VanillaRecipeBuilders.smeltingAndBlasting(exporter) { ingredient { items { +dust } } result { +item } @@ -510,7 +521,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut } // Fuel for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { - val base: HTSimpleDeferredItem = RagiumMaterialHelper.getFuelBase(fuel) + val base: HTSimpleDeferredItem = RagiumMaterialHelper.getBase(fuel) // Storage nineToBlock(fuel, Ingredient.of(base), base) // Tiny diff --git a/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json new file mode 100644 index 000000000..c1d3e117a --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/calcium_hydroxide_solution" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json new file mode 100644 index 000000000..46c0e2bba --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/calcium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json b/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json new file mode 100644 index 000000000..61a3cb335 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:calcium_hydroxide_solution", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json new file mode 100644 index 000000000..19e4e3c6a --- /dev/null +++ b/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json b/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json new file mode 100644 index 000000000..a7eb3a34b --- /dev/null +++ b/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "flip_gas": true, + "fluid": "ragium:carbon_dioxide", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cement.json b/src/generated/resources/assets/ragium/items/cement.json new file mode 100644 index 000000000..53fa74ebe --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cement.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/mortar.json b/src/generated/resources/assets/ragium/items/mortar.json new file mode 100644 index 000000000..8cc764b4f --- /dev/null +++ b/src/generated/resources/assets/ragium/items/mortar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json new file mode 100644 index 000000000..b3eba9dda --- /dev/null +++ b/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 771729b9e..7e32ebe48 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -31,6 +31,8 @@ "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", + "block.ragium.calcium_hydroxide_solution": "Calcium Hydroxide Solution", + "block.ragium.carbon_dioxide": "Carbon Dioxide", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", "block.ragium.chemical_machine_casing": "Machine Casing (Chemical)", @@ -208,8 +210,13 @@ "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", + "item.ragium.calcium_carbonate_dust": "Calcium Carbonate Dust", + "item.ragium.calcium_hydroxide_solution_bucket": "Calcium Hydroxide Solution Bucket", + "item.ragium.calcium_oxide_dust": "Calcium Oxide Dust", + "item.ragium.carbon_dioxide_bucket": "Carbon Dioxide Bucket", "item.ragium.carbon_dust": "Carbon Dust", "item.ragium.carbon_fiber": "Carbon Fiber", + "item.ragium.cement": "Cement", "item.ragium.cfrp_plate": "CFRP Plate", "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", @@ -263,6 +270,7 @@ "item.ragium.molten_glass_bucket": "Molten Glass Bucket", "item.ragium.molten_glowstone_bucket": "Energized Glowstone Bucket", "item.ragium.molten_redstone_bucket": "Destabilized Redstone Bucket", + "item.ragium.mortar": "Mortar", "item.ragium.naphtha_bucket": "Naphtha Bucket", "item.ragium.netherite_dust": "Netherite Dust", "item.ragium.netherite_gear": "Netherite Gear", @@ -291,6 +299,7 @@ "item.ragium.salt_water_bucket": "Salt Water Bucket", "item.ragium.silicon_dust": "Silicon Dust", "item.ragium.silicon_wafer": "Silicon Wafer", + "item.ragium.sodium_carbonate_dust": "Sodium Carbonate Dust", "item.ragium.sodium_hydroxide_solution_bucket": "Sodium Hydroxide Solution Bucket", "item.ragium.sooty_iron_axe": "Sooty Iron Axe", "item.ragium.sooty_iron_hoe": "Sooty Iron Hoe", @@ -394,6 +403,8 @@ "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", "tag.fluid.c.bleach": "Bleach", + "tag.fluid.c.calcium_hydroxide_solution": "Calcium Hydroxide Solution", + "tag.fluid.c.carbon_dioxide": "Carbon Dioxide", "tag.fluid.c.chlorine": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", "tag.fluid.c.crude_oil": "Crude Oil", @@ -442,6 +453,8 @@ "tag.item.c.buckets.anti_rust_oil": "Anti-rust Oil Bucket", "tag.item.c.buckets.aromatic_compound": "Aromatic Compound Bucket", "tag.item.c.buckets.bleach": "Bleach Bucket", + "tag.item.c.buckets.calcium_hydroxide_solution": "Calcium Hydroxide Solution Bucket", + "tag.item.c.buckets.carbon_dioxide": "Carbon Dioxide Bucket", "tag.item.c.buckets.chlorine": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", "tag.item.c.buckets.crude_oil": "Crude Oil Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index b135e0ea9..b4e0a8c17 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -31,6 +31,8 @@ "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", + "block.ragium.calcium_hydroxide_solution": "水酸化カルシウム水溶液", + "block.ragium.carbon_dioxide": "二酸化炭素", "block.ragium.charcoal_block": "木炭ブロック", "block.ragium.chemical_bath": "化学浴槽", "block.ragium.chemical_machine_casing": "機械筐体 (化学)", @@ -208,8 +210,13 @@ "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", + "item.ragium.calcium_carbonate_dust": "炭酸カルシウムの粉", + "item.ragium.calcium_hydroxide_solution_bucket": "水酸化カルシウム水溶液入りバケツ", + "item.ragium.calcium_oxide_dust": "酸化カルシウムの粉", + "item.ragium.carbon_dioxide_bucket": "二酸化炭素入りバケツ", "item.ragium.carbon_dust": "炭素の粉", "item.ragium.carbon_fiber": "炭素繊維", + "item.ragium.cement": "セメント", "item.ragium.cfrp_plate": "炭素繊維強化プラスチック板", "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", @@ -263,6 +270,7 @@ "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", "item.ragium.molten_glowstone_bucket": "活性グロウストーン入りバケツ", "item.ragium.molten_redstone_bucket": "励起レッドストーン入りバケツ", + "item.ragium.mortar": "モルタル", "item.ragium.naphtha_bucket": "ナフサ入りバケツ", "item.ragium.netherite_dust": "ネザライトの粉", "item.ragium.netherite_gear": "ネザライトの歯車", @@ -291,6 +299,7 @@ "item.ragium.salt_water_bucket": "塩水入りバケツ", "item.ragium.silicon_dust": "シリコンの粉", "item.ragium.silicon_wafer": "シリコンウェハ", + "item.ragium.sodium_carbonate_dust": "炭酸ナトリウムの粉", "item.ragium.sodium_hydroxide_solution_bucket": "水酸化ナトリウム水溶液入りバケツ", "item.ragium.sooty_iron_axe": "煤鉄の斧", "item.ragium.sooty_iron_hoe": "煤鉄のクワ", @@ -394,6 +403,8 @@ "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", "tag.fluid.c.bleach": "漂白剤", + "tag.fluid.c.calcium_hydroxide_solution": "水酸化カルシウム水溶液", + "tag.fluid.c.carbon_dioxide": "二酸化炭素", "tag.fluid.c.chlorine": "塩素", "tag.fluid.c.coal_tar": "石炭タール", "tag.fluid.c.crude_oil": "原油", @@ -442,6 +453,8 @@ "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", "tag.item.c.buckets.bleach": "漂白剤入りバケツ", + "tag.item.c.buckets.calcium_hydroxide_solution": "水酸化カルシウム水溶液入りバケツ", + "tag.item.c.buckets.carbon_dioxide": "二酸化炭素入りバケツ", "tag.item.c.buckets.chlorine": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", "tag.item.c.buckets.crude_oil": "原油入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json new file mode 100644 index 000000000..67032282f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/water_still" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json new file mode 100644 index 000000000..1354ddc0e --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/calcium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json new file mode 100644 index 000000000..4b827ffa6 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cement.json b/src/generated/resources/assets/ragium/models/item/cement.json new file mode 100644 index 000000000..8562dfd76 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cement.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/mortar.json b/src/generated/resources/assets/ragium/models/item/mortar.json new file mode 100644 index 000000000..992190553 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/mortar.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json new file mode 100644 index 000000000..f1e838bbe --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json new file mode 100644 index 000000000..f40a727e7 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json @@ -0,0 +1,6 @@ +{ + "values": [ + "ragium:calcium_hydroxide_solution", + "ragium:flowing_calcium_hydroxide_solution" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json b/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json new file mode 100644 index 000000000..569a44033 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:carbon_dioxide" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/gaseous.json b/src/generated/resources/data/c/tags/fluid/gaseous.json index 6ce4deb51..db825acbd 100644 --- a/src/generated/resources/data/c/tags/fluid/gaseous.json +++ b/src/generated/resources/data/c/tags/fluid/gaseous.json @@ -1,5 +1,6 @@ { "values": [ + "#c:carbon_dioxide", "#c:chlorine", "#c:hydrogen", "#c:hydrogen_chloride", diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 735e4cb61..70f248161 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -4,6 +4,8 @@ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", "#c:buckets/bleach", + "#c:buckets/calcium_hydroxide_solution", + "#c:buckets/carbon_dioxide", "#c:buckets/chlorine", "#c:buckets/coal_tar", "#c:buckets/crude_oil", diff --git a/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json new file mode 100644 index 000000000..021779374 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_hydroxide_solution_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json b/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json new file mode 100644 index 000000000..ec0f9fc7c --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:carbon_dioxide_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index 4decc30e5..aac1387a8 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -4,6 +4,8 @@ "#c:dusts/amethyst", "#c:dusts/bauxite", "#c:dusts/borax", + "#c:dusts/calcium_carbonate", + "#c:dusts/calcium_oxide", "#c:dusts/carbon", "#c:dusts/charcoal", "#c:dusts/coal", @@ -26,6 +28,7 @@ "#c:dusts/raginite", "#c:dusts/salt", "#c:dusts/silicon", + "#c:dusts/sodium_carbonate", "#c:dusts/sulfur", "#c:dusts/wood" ] diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json new file mode 100644 index 000000000..5bad65c1f --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_carbonate_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json b/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json new file mode 100644 index 000000000..fba81a24e --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:calcium_oxide_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json new file mode 100644 index 000000000..487d2b7ca --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:sodium_carbonate_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/glass.json b/src/generated/resources/data/ragium/recipe/alloying/glass.json new file mode 100644 index 000000000..45bab79f2 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/glass.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#c:dusts/sodium_carbonate" + }, + "ingredient": { + "count": 2, + "items": "#c:dusts/quartz" + }, + "result": { + "count": 6, + "id": "minecraft:glass" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json deleted file mode 100644 index b1ab1a283..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/obzinite_ingot.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "ragium:alloying", - "extras": [ - { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/copper", - "c:ingots/copper" - ] - } - }, - { - "count": 1, - "items": "#c:dusts/obsidian" - } - ], - "ingredient": { - "count": 3, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/aluminum", - "c:ingots/aluminum" - ] - } - }, - "result": { - "count": 4, - "id": "ragium:black_steel_ingot" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json b/src/generated/resources/data/ragium/recipe/bathing/mortar.json similarity index 59% rename from src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json rename to src/generated/resources/data/ragium/recipe/bathing/mortar.json index 83aab8897..f2e35bb8d 100644 --- a/src/generated/resources/data/ragium/recipe/bathing/salt_dust_from_block.json +++ b/src/generated/resources/data/ragium/recipe/bathing/mortar.json @@ -1,16 +1,16 @@ { "type": "ragium:bathing", "fluid_ingredient": { - "amount": 1000, + "amount": 250, "fluids": "#c:water" }, "item_ingredient": { "count": 1, - "items": "#c:storage_blocks/dried_kelp" + "items": "ragium:cement" }, "result": { - "count": 6, - "id": "ragium:salt_dust" + "count": 1, + "id": "ragium:mortar" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json b/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json deleted file mode 100644 index 3e3237620..000000000 --- a/src/generated/resources/data/ragium/recipe/bathing/tinted_glass.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "ragium:bathing", - "fluid_ingredient": { - "amount": 1000, - "fluids": "#c:molten_glass" - }, - "item_ingredient": { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/amethyst", - "c:gems/amethyst" - ] - } - }, - "result": { - "count": 2, - "id": "minecraft:tinted_glass" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json new file mode 100644 index 000000000..cd8af007b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.15, + "ingredient": "#c:dusts/calcium_carbonate", + "result": { + "id": "ragium:calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json new file mode 100644 index 000000000..5c40bbfb8 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.15, + "ingredient": "minecraft:dried_kelp", + "result": { + "id": "ragium:sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json b/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json new file mode 100644 index 000000000..73a1544e3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "minecraft:calcite" + }, + "result": { + "count": 1, + "id": "ragium:calcium_carbonate_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json b/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json new file mode 100644 index 000000000..f025a96b0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 1, + "items": "#c:dusts/calcium_oxide" + }, + "result": { + "amount": 1000, + "id": "ragium:calcium_hydroxide_solution" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json new file mode 100644 index 000000000..7b6805650 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:pyrolyzing", + "fluid_result": { + "amount": 1000, + "id": "ragium:carbon_dioxide" + }, + "ingredient": { + "count": 1, + "items": "#c:dusts/calcium_carbonate" + }, + "item_result": { + "count": 1, + "id": "ragium:calcium_oxide_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json new file mode 100644 index 000000000..fdb83b2ac --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:reacting", + "fluid_result": { + "amount": 2000, + "id": "minecraft:water" + }, + "item_result": { + "count": 1, + "id": "ragium:calcium_carbonate_dust" + }, + "primary_ingredient": { + "amount": 1000, + "fluids": "#c:calcium_hydroxide_solution" + }, + "secondary_ingredient": { + "amount": 1000, + "fluids": "#c:carbon_dioxide" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json new file mode 100644 index 000000000..bf3369b22 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json @@ -0,0 +1,20 @@ +{ + "type": "ragium:reacting", + "fluid_result": { + "amount": 2000, + "id": "minecraft:water" + }, + "item_result": { + "count": 1, + "id": "ragium:sodium_carbonate_dust" + }, + "primary_ingredient": { + "amount": 1000, + "fluids": "#c:sodium_hydroxide_solution" + }, + "secondary_ingredient": { + "amount": 1000, + "fluids": "#c:carbon_dioxide" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/bricks.json b/src/generated/resources/data/ragium/recipe/shaped/bricks.json new file mode 100644 index 000000000..e48ffb6c2 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:bricks/normal", + "B": "ragium:mortar" + }, + "pattern": [ + "AB", + "BA" + ], + "result": { + "id": "minecraft:bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json b/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json new file mode 100644 index 000000000..8b8cdccfa --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/nether_bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:bricks/nether", + "B": "ragium:mortar" + }, + "pattern": [ + "AB", + "BA" + ], + "result": { + "id": "minecraft:nether_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shapeless/cement.json b/src/generated/resources/data/ragium/recipe/shapeless/cement.json new file mode 100644 index 000000000..3f43b9d05 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/cement.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:sands", + "#c:dusts/calcium_oxide" + ], + "result": { + "count": 2, + "id": "ragium:cement" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shapeless/mortar.json b/src/generated/resources/data/ragium/recipe/shapeless/mortar.json new file mode 100644 index 000000000..e0e3b7e37 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shapeless/mortar.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "#c:buckets/water", + "ragium:cement", + "ragium:cement", + "ragium:cement", + "ragium:cement" + ], + "result": { + "count": 4, + "id": "ragium:mortar" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json new file mode 100644 index 000000000..0b66d4608 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.15, + "ingredient": "#c:dusts/calcium_carbonate", + "result": { + "id": "ragium:calcium_oxide_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json new file mode 100644 index 000000000..d6b4c276b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.15, + "ingredient": "minecraft:dried_kelp", + "result": { + "id": "ragium:sodium_carbonate_dust" + } +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 87575c2ae..87452f00c 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -13,11 +13,9 @@ sealed interface RagiumMaterial : @JvmField val entries: Sequence = sequence { yieldAll(Fuel.entries) - yieldAll(Mineral.entries) + yieldAll(DustLike.entries) yieldAll(Gem.entries) - yieldAll(Metal.entries) - yieldAll(Alloy.entries) - yieldAll(Other.entries) + yieldAll(MetalLike.entries) } @JvmField @@ -49,8 +47,22 @@ sealed interface RagiumMaterial : override val materialName: String = name.lowercase() } + /** + * @since 26.1.8 + */ + sealed interface DustLike : RagiumMaterial { + companion object { + @JvmField + val entries: Sequence = sequence { + yieldAll(Mineral.entries) + yieldAll(Chemicals.entries) + yieldAll(Other.entries) + } + } + } + enum class Mineral(langName: HTLangName, override val chemicalKey: ResourceKey?) : - RagiumMaterial, + DustLike, HTLangName by langName { // Minecraft REDSTONE("Redstone", "レッドストーン"), @@ -81,6 +93,49 @@ sealed interface RagiumMaterial : override val materialName: String = name.lowercase() } + /** + * @since 26.1.8 + */ + enum class Chemicals(langName: HTLangName, override val chemicalKey: ResourceKey?) : + DustLike, + HTLangName by langName { + // Common + CARBON("Carbon", "炭素", RagiumChemicals.CARBON), + + /** + * @since 26.1.8 + */ + SODIUM_CARBONATE("Sodium Carbonate", "炭酸ナトリウム"), + + /** + * @since 26.1.7 + */ + ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), + + /** + * @since 26.1.7 + */ + SILICON("Silicon", "シリコン", RagiumChemicals.SILICON), + + /** + * @since 26.1.8 + */ + CALCIUM_CARBONATE("Calcium Carbonate", "炭酸カルシウム"), + + /** + * @since 26.1.8 + */ + CALCIUM_OXIDE("Calcium Oxide", "酸化カルシウム") + ; + + constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( + HTLangName(enName, jaName), + chemicalKey + ) + + override val materialName: String = name.lowercase() + } + enum class Gem(langName: HTLangName, override val chemicalKey: ResourceKey?) : RagiumMaterial, HTLangName by langName { @@ -114,8 +169,21 @@ sealed interface RagiumMaterial : override val materialName: String = name.lowercase() } + /** + * @since 26.1.8 + */ + sealed interface MetalLike : RagiumMaterial { + companion object { + @JvmField + val entries: Sequence = sequence { + yieldAll(Metal.entries) + yieldAll(Alloy.entries) + } + } + } + enum class Metal(langName: HTLangName, override val chemicalKey: ResourceKey?) : - RagiumMaterial, + MetalLike, HTLangName by langName { // Minecraft COPPER("Copper", "銅", RagiumChemicals.COPPER), @@ -139,7 +207,7 @@ sealed interface RagiumMaterial : } enum class Alloy(langName: HTLangName, override val chemicalKey: ResourceKey?) : - RagiumMaterial, + MetalLike, HTLangName by langName { // Minecraft NETHERITE("Netherite", "ネザライト"), @@ -171,7 +239,7 @@ sealed interface RagiumMaterial : } enum class Other(langName: HTLangName, override val chemicalKey: ResourceKey?) : - RagiumMaterial, + DustLike, HTLangName by langName { // Minecraft WOOD("Wood", "木") { @@ -181,20 +249,7 @@ sealed interface RagiumMaterial : OBSIDIAN("Obsidian", "黒曜石"), PAPER("Paper", "紙") { override val isPulp: Boolean = true - }, - - // Common - CARBON("Carbon", "炭素", RagiumChemicals.CARBON), - - /** - * @since 26.1.7 - */ - ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), - - /** - * @since 26.1.7 - */ - SILICON("Silicon", "シリコン", RagiumChemicals.SILICON) + } ; constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index 00576ad08..389e32422 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -28,7 +28,6 @@ data object RagiumFluids { @JvmStatic fun register(eventBus: IEventBus) { - REGISTER.addAlias("calcium_hydroxide_solution", "sodium_hydroxide_solution") REGISTER.addAlias(RagiumAPI.id("molten_blaze"), vanillaId("lava")) REGISTER.addAlias("creosote", "coal_tar") REGISTER.addAlias("chloride", "chlorine") @@ -143,6 +142,9 @@ data object RagiumFluids { // Chemical // // C + @JvmField + val CARBON_DIOXIDE: HTFluidContent.Virtual = REGISTER.registerVirtual("carbon_dioxide") { properties = gaseous() } + @JvmField val WOOD_TAR: HTFluidContent.Virtual = REGISTER.registerVirtual("wood_tar") { properties = liquid() @@ -251,6 +253,12 @@ data object RagiumFluids { @JvmField val BLEACH: HTFluidContent.Virtual = REGISTER.registerVirtual("bleach") { properties = liquid() } + // Ca + @JvmField + val CAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("calcium_hydroxide_solution") { + properties = liquid() + } + // Other @JvmField val ORE_SLURRY: HTFluidContent.Virtual = REGISTER.registerVirtual("ore_slurry") { diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 7b9253502..44048f4d9 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -63,10 +63,9 @@ data object RagiumItems { putAll(RagiumMaterial.Fuel.COAL_COKE, HTItemPart.TINY) putAll(RagiumMaterial.Fuel.PITCH_COKE, HTItemPart.TINY) // Mineral - for (mineral: RagiumMaterial.Mineral in RagiumMaterial.Mineral.entries) { - if (!mineral.isVanilla) { - putAll(mineral, HTItemPart.DUST) - } + for (dustLike: RagiumMaterial.DustLike in RagiumMaterial.DustLike.entries) { + if (dustLike is RagiumMaterial.Mineral && dustLike.isVanilla) continue + putAll(dustLike, HTItemPart.DUST) } // Gem putAll(RagiumMaterial.Gem.LAPIS, HTItemPart.DUST) @@ -89,13 +88,7 @@ data object RagiumItems { putAll(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT, HTItemPart.NUGGET) putAll(RagiumMaterial.Alloy.VOID_METAL, HTItemPart.INGOT, HTItemPart.NUGGET) // Other - putAll(RagiumMaterial.Other.WOOD, HTItemPart.DUST, HTItemPart.GEAR) - putAll(RagiumMaterial.Other.GLASS, HTItemPart.DUST) - putAll(RagiumMaterial.Other.OBSIDIAN, HTItemPart.DUST) - putAll(RagiumMaterial.Other.PAPER, HTItemPart.DUST) - putAll(RagiumMaterial.Other.CARBON, HTItemPart.DUST) - putAll(RagiumMaterial.Other.ALUMINA, HTItemPart.DUST) - putAll(RagiumMaterial.Other.SILICON, HTItemPart.DUST) + putAll(RagiumMaterial.Other.WOOD, HTItemPart.GEAR) }, ::sortedSetOf ).flatMapTable { (material: RagiumMaterial, parts: Collection) -> @@ -130,6 +123,15 @@ data object RagiumItems { @JvmField val BAMBOO_CHARCOAL: HTSimpleDeferredItem = REGISTER.registerSimpleItem("bamboo_charcoal") + @JvmField + val PARTICLE_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("particle_board") + + @JvmField + val CEMENT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cement") + + @JvmField + val MORTAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("mortar") + // Heat @JvmField val COAL_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem(RagiumMaterial.Fuel.COAL_COKE.materialName) { @@ -145,9 +147,6 @@ data object RagiumItems { } // Chemical - @JvmField - val PARTICLE_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("particle_board") - @JvmField val PLASTIC_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("plastic_plate") diff --git a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt index a04e052d4..8cffa6999 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumMaterialHelper.kt @@ -2,15 +2,52 @@ package hiiragi283.ragium.common.material import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.vanillaId +import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.item.RagiumItems data object RagiumMaterialHelper { @JvmStatic - fun getFuelBase(fuel: RagiumMaterial.Fuel): HTSimpleDeferredItem = when (fuel) { + fun getBase(fuel: RagiumMaterial.Fuel): HTSimpleDeferredItem = when (fuel) { RagiumMaterial.Fuel.COAL -> HTSimpleDeferredItem(vanillaId("coal")) RagiumMaterial.Fuel.CHARCOAL -> HTSimpleDeferredItem(vanillaId("charcoal")) RagiumMaterial.Fuel.COAL_COKE -> RagiumItems.COAL_COKE RagiumMaterial.Fuel.PITCH_COKE -> RagiumItems.PITCH_COKE } + + @JvmStatic + fun getDust(dustLike: RagiumMaterial.DustLike): HTSimpleDeferredItem = when (dustLike) { + RagiumMaterial.Mineral.REDSTONE -> HTSimpleDeferredItem(vanillaId("redstone")) + RagiumMaterial.Mineral.GLOWSTONE -> HTSimpleDeferredItem(vanillaId("glowstone_dust")) + else -> RagiumItems.getOrThrow(HTItemPart.DUST, dustLike) + } + + @JvmStatic + fun getGem(gem: RagiumMaterial.Gem): HTSimpleDeferredItem = when (gem) { + RagiumMaterial.Gem.LAPIS -> HTSimpleDeferredItem(vanillaId("lapis_lazuri")) + RagiumMaterial.Gem.QUARTZ -> HTSimpleDeferredItem(vanillaId("quartz")) + RagiumMaterial.Gem.AMETHYST -> HTSimpleDeferredItem(vanillaId("amethyst_shard")) + RagiumMaterial.Gem.DIAMOND -> HTSimpleDeferredItem(vanillaId("diamond")) + RagiumMaterial.Gem.EMERALD -> HTSimpleDeferredItem(vanillaId("emerald")) + RagiumMaterial.Gem.ECHO -> HTSimpleDeferredItem(vanillaId("echo_shard")) + RagiumMaterial.Gem.PRISMARINE -> HTSimpleDeferredItem(vanillaId("prismarine_crystals")) + else -> RagiumItems.getOrThrow(HTItemPart.GEM, gem) + } + + @JvmStatic + fun getIngot(metalLike: RagiumMaterial.MetalLike): HTSimpleDeferredItem = when (metalLike) { + RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_ingot")) + RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_ingot")) + RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_ingot")) + RagiumMaterial.Alloy.NETHERITE -> HTSimpleDeferredItem(vanillaId("netherite_ingot")) + else -> RagiumItems.getOrThrow(HTItemPart.INGOT, metalLike) + } + + @JvmStatic + fun getNugget(metalLike: RagiumMaterial.MetalLike): HTSimpleDeferredItem = when (metalLike) { + RagiumMaterial.Metal.COPPER -> HTSimpleDeferredItem(vanillaId("copper_nugget")) + RagiumMaterial.Metal.IRON -> HTSimpleDeferredItem(vanillaId("iron_nugget")) + RagiumMaterial.Metal.GOLD -> HTSimpleDeferredItem(vanillaId("gold_nugget")) + else -> RagiumItems.getOrThrow(HTItemPart.NUGGET, metalLike) + } } diff --git a/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..71316781ac03034c7d3923c3e7404d522c674c16 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mpok@Ln`8uC7vaGeRcJ}qr`mk znFXFrCR$orMiP>eh7XKcRx>K_D)crrH6?s@{PO1J=Ksl?c@8toNSpEK`}_OG4KYlI zZtx_!n2E+3`@H-2_cxD1vx6Sv#^B)Khrb@^HT;yk`Ku~gNRh1n?*CJYS6$|?kBUlBb5 P^c{nztDnm{r-UW|0v=)W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png b/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..71316781ac03034c7d3923c3e7404d522c674c16 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mpok@Ln`8uC7vaGeRcJ}qr`mk znFXFrCR$orMiP>eh7XKcRx>K_D)crrH6?s@{PO1J=Ksl?c@8toNSpEK`}_OG4KYlI zZtx_!n2E+3`@H-2_cxD1vx6Sv#^B)Khrb@^HT;yk`Ku~gNRh1n?*CJYS6$|?kBUlBb5 P^c{nztDnm{r-UW|0v=)W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..71316781ac03034c7d3923c3e7404d522c674c16 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mpok@Ln`8uC7vaGeRcJ}qr`mk znFXFrCR$orMiP>eh7XKcRx>K_D)crrH6?s@{PO1J=Ksl?c@8toNSpEK`}_OG4KYlI zZtx_!n2E+3`@H-2_cxD1vx6Sv#^B)Khrb@^HT;yk`Ku~gNRh1n?*CJYS6$|?kBUlBb5 P^c{nztDnm{r-UW|0v=)W literal 0 HcmV?d00001 From 8cc1da2fc0a7f8242b3b04dae4af943f53d300aa Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 27 Sep 2026 01:04:24 +0900 Subject: [PATCH 13/38] =?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=8CSticky=20Ball=20/?= =?UTF-8?q?=20=E7=B2=98=E7=9D=80=E8=B3=AA=E3=81=AE=E5=A1=8A=E3=80=8D?= =?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 --- .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../recipe/RagiumChemicalRecipeProvider.kt | 23 ++++++++++++++++++ .../data/recipe/RagiumHeatRecipeProvider.kt | 9 +++++++ .../ragium/data/tag/RagiumItemTagsProvider.kt | 4 ++- .../assets/ragium/items/sticky_ball.json | 6 +++++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/item/sticky_ball.json | 6 +++++ .../data/c/tags/item/sticky_balls.json | 3 ++- .../ragium/recipe/bathing/particle_board.json | 16 ++++++++++++ .../ragium/recipe/freezing/sticky_ball.json | 12 +++++++++ .../ragium/common/item/RagiumItems.kt | 3 +++ .../ragium/textures/item/sticky_ball.png | Bin 0 -> 302 bytes 14 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/sticky_ball.json create mode 100644 src/generated/resources/assets/ragium/models/item/sticky_ball.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/particle_board.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json create mode 100644 src/main/resources/assets/ragium/textures/item/sticky_ball.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 6ab1afde8..a0b0503a5 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -132,6 +132,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.CEMENT, "Cement") add(RagiumItems.MORTAR, "Mortar") add(RagiumItems.TAR, "Tar") + add(RagiumItems.STICKY_BALL, "Sticky Ball") add(RagiumItems.PLASTIC_PLATE, "Plastic Plate") add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index f101ab3c6..98197ca87 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -128,6 +128,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.CEMENT, "セメント") add(RagiumItems.MORTAR, "モルタル") add(RagiumItems.TAR, "タール") + add(RagiumItems.STICKY_BALL, "粘着質な塊") add(RagiumItems.PLASTIC_PLATE, "プラスチック板") add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 74df04d61..f7a4abf19 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -1,16 +1,39 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders +import hiiragi283.ragium.api.material.RagiumMaterial +import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput +import net.minecraft.world.item.Items import java.util.concurrent.CompletableFuture class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + // Wood Pulp + Resin -> Particle Board + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } + fluidIngredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 8 + } + result { +RagiumItems.PARTICLE_BOARD } + }.save(exporter) + // Piston + Resin -> Sticky Piston + RagiumRecipeBuilders.bathing { + itemIngredient { items { +Items.PISTON } } + fluidIngredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 8 + } + result { +Items.STICKY_PISTON } + }.save(exporter) + // Cement + Water -> Mortar RagiumRecipeBuilders.bathing { itemIngredient { items { +RagiumItems.CEMENT } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index d67f648fb..ebde48cd3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -132,6 +132,15 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture ingredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } result { +Items.GLASS } }.save(exporter) + + // Sticky Ball + RagiumRecipeBuilders.freezing { + ingredient { + +holderSet(RagiumTags.Fluids.RESINS) + amount /= 4 + } + result { +RagiumItems.STICKY_BALL } + }.save(exporter) } private fun melting() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index bc14d6762..189c18db1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -73,7 +73,9 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(HTCommonTags.Items.PITCH_COKE).add(RagiumItems.PITCH_COKE) builder(HTCommonTags.Items.PLASTICS).add(RagiumItems.PLASTIC_PLATE) builder(HTCommonTags.Items.SILICON).add(RagiumItems.CRUDE_SILICON) - builder(HTCommonTags.Items.STICKY_BALLS).addTag(Tags.Items.SLIME_BALLS) + builder(Tags.Items.SLIME_BALLS) + .addTag(Tags.Items.SLIME_BALLS) + .add(RagiumItems.STICKY_BALL) builder(RagiumTags.Items.COALS) .add(RagiumItems.BAMBOO_CHARCOAL) diff --git a/src/generated/resources/assets/ragium/items/sticky_ball.json b/src/generated/resources/assets/ragium/items/sticky_ball.json new file mode 100644 index 000000000..481f769dc --- /dev/null +++ b/src/generated/resources/assets/ragium/items/sticky_ball.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/sticky_ball" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 7e32ebe48..a1b976777 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -309,6 +309,7 @@ "item.ragium.sooty_iron_shovel": "Sooty Iron Shovel", "item.ragium.sooty_iron_sword": "Sooty Iron Sword", "item.ragium.splash_bottle": "Splash Bottle", + "item.ragium.sticky_ball": "Sticky Ball", "item.ragium.sulfur_dioxide_bucket": "Sulfur Dioxide Bucket", "item.ragium.sulfur_dust": "Sulfur Dust", "item.ragium.sulfur_trioxide_bucket": "Sulfur Trioxide Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index b4e0a8c17..3dabc55b3 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -309,6 +309,7 @@ "item.ragium.sooty_iron_shovel": "煤鉄のショベル", "item.ragium.sooty_iron_sword": "煤鉄の剣", "item.ragium.splash_bottle": "スプラッシュ瓶", + "item.ragium.sticky_ball": "粘着質な塊", "item.ragium.sulfur_dioxide_bucket": "二酸化硫黄入りバケツ", "item.ragium.sulfur_dust": "硫黄の粉", "item.ragium.sulfur_trioxide_bucket": "三酸化硫黄入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/sticky_ball.json b/src/generated/resources/assets/ragium/models/item/sticky_ball.json new file mode 100644 index 000000000..305ca35ab --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/sticky_ball.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/sticky_ball" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/sticky_balls.json b/src/generated/resources/data/c/tags/item/sticky_balls.json index a99bc9dea..f9f3b6521 100644 --- a/src/generated/resources/data/c/tags/item/sticky_balls.json +++ b/src/generated/resources/data/c/tags/item/sticky_balls.json @@ -1,5 +1,6 @@ { "values": [ - "#c:slime_balls" + "#c:slime_balls", + "ragium:sticky_ball" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/particle_board.json b/src/generated/resources/data/ragium/recipe/bathing/particle_board.json new file mode 100644 index 000000000..717a98c83 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/particle_board.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "#c:dusts/wood" + }, + "result": { + "count": 1, + "id": "ragium:particle_board" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json new file mode 100644 index 000000000..97893ca52 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:freezing", + "ingredient": { + "amount": 250, + "fluids": "#ragium:resins" + }, + "result": { + "count": 1, + "id": "ragium:sticky_ball" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 44048f4d9..d7d2b04a8 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -146,6 +146,9 @@ data object RagiumItems { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) } + @JvmField + val STICKY_BALL: HTSimpleDeferredItem = REGISTER.registerSimpleItem("sticky_ball") + // Chemical @JvmField val PLASTIC_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("plastic_plate") diff --git a/src/main/resources/assets/ragium/textures/item/sticky_ball.png b/src/main/resources/assets/ragium/textures/item/sticky_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..641e8185c104bd368cebdaa4f522368d4d4b90e1 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k3C%+Ln;`z^cnIwItsK+pB1NM zwdkUzNY>UPtR;L8m=*v6s%hFY wf6rpANM84!iGkt&|1WjtwSnGc19_L3LF09W;@vw2aX=9UPgg&ebxsLQ0K>g=V*mgE literal 0 HcmV?d00001 From e2fdb9a50b499fd575492f9bc801fd8086f50a2e Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 27 Sep 2026 19:38:38 +0900 Subject: [PATCH 14/38] =?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?Washing=20/=20=E6=B4=97=E6=B5=84=E3=80=8D=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20feat!:=20HTOreSlurryData=20=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 8 -- .../client/integration/jei/RagiumJeiPlugin.kt | 53 +--------- .../integration/jei/RagiumJeiRecipeTypes.kt | 5 + .../jei/category/RTWashingRecipeCategory.kt | 49 +++++++++ .../hiiragi283/ragium/data/RagiumDataGen.kt | 2 - .../data/lang/RagiumEnglishLangProvider.kt | 12 +-- .../data/lang/RagiumJapaneseLangProvider.kt | 12 +-- .../ragium/data/model/RagiumModelProvider.kt | 2 - .../recipe/RagiumChemicalRecipeProvider.kt | 99 ++++++++++++++++++- .../recipe/RagiumMechanicalRecipeProvider.kt | 35 +------ .../ragium/data/tag/RagiumItemTagsProvider.kt | 2 +- .../ragium/items/ore_slurry_bucket.json | 12 --- .../resources/assets/ragium/lang/en_us.json | 7 +- .../resources/assets/ragium/lang/ja_jp.json | 7 +- .../data/c/tags/fluid/ore_slurry.json | 5 - .../resources/data/c/tags/item/buckets.json | 1 - .../data/c/tags/item/buckets/ore_slurry.json | 5 - .../ragium/ragium/ore_slurry_data/copper.json | 17 ---- .../ragium/ragium/ore_slurry_data/gold.json | 17 ---- .../ragium/ragium/ore_slurry_data/iron.json | 17 ---- .../ore_slurry_data/netherite_scrap.json | 10 -- .../ragium/recipe/bathing/sticky_piston.json | 16 +++ .../ragium/recipe/crushing/packed_ice.json | 18 ---- .../data/ragium/recipe/crushing/red_sand.json | 14 +-- .../data/ragium/recipe/crushing/sand.json | 14 +-- .../recipe/washing/copper_dust_from_raw.json | 16 +++ .../recipe/washing/gold_dust_from_raw.json | 16 +++ .../recipe/washing/iron_dust_from_raw.json | 16 +++ .../washing/netherite_scrap_from_debris.json | 16 +++ .../ragium/recipe/washing/packed_ice.json | 22 +++++ .../washing/quartz_dust_from_red_sands.json | 22 +++++ .../washing/quartz_dust_from_sands.json | 22 +++++ .../recipe/base/HTItemToDoubleItemRecipe.kt | 8 +- .../hiiragi283/ragium/api/RagiumConstants.kt | 2 + .../hiiragi283/ragium/api/RagiumRegistries.kt | 12 --- .../ragium/api/data/RagiumDataComponents.kt | 8 -- .../api/data/oreSlurry/HTOreSlurryData.kt | 50 ---------- .../data/oreSlurry/HTOreSlurryDataHelper.kt | 49 --------- .../data/oreSlurry/HTOreSlurryFluidAccess.kt | 20 ---- .../api/data/oreSlurry/RagiumOreSlurryData.kt | 78 --------------- .../recipe/builder/RTWashingRecipeBuilder.kt | 64 ++++++++++++ .../recipe/builder/RagiumRecipeBuilders.kt | 8 ++ .../ragium/api/recipe/RTWashingRecipe.kt | 81 +++++++++++++++ .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 + .../api/recipe/RagiumRecipeSerializers.kt | 4 + .../ragium/api/recipe/RagiumRecipeTypes.kt | 3 + .../HTItemAndFluidToItemRecipeCategory.kt | 2 +- .../HTItemToDoubleItemRecipeCategory.kt | 6 +- .../kotlin/hiiragi283/ragium/common/Ragium.kt | 1 - .../hiiragi283/ragium/common/RagiumCommon.kt | 9 -- .../oreSlurry/RagiumOreSlurryFluidAccess.kt | 9 -- .../common/fluid/HTOreSlurryFluidType.kt | 15 --- .../ragium/common/fluid/RagiumFluids.kt | 9 -- .../common/item/HTOreSlurryBucketItem.kt | 51 ---------- .../ragium/common/item/RagiumItems.kt | 11 --- .../common/recipe/RTOreSlurryWashingRecipe.kt | 34 ------- .../common/recipe/RTOreSolvingRecipe.kt | 32 ------ ....api.data.oreSlurry.HTOreSlurryFluidAccess | 1 - 58 files changed, 491 insertions(+), 648 deletions(-) create mode 100644 src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt delete mode 100644 src/generated/resources/assets/ragium/items/ore_slurry_bucket.json delete mode 100644 src/generated/resources/data/c/tags/fluid/ore_slurry.json delete mode 100644 src/generated/resources/data/c/tags/item/buckets/ore_slurry.json delete mode 100644 src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json delete mode 100644 src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json delete mode 100644 src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json delete mode 100644 src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json create mode 100644 src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json delete mode 100644 src/generated/resources/data/ragium/recipe/crushing/packed_ice.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/packed_ice.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json create mode 100644 src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt delete mode 100644 src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt delete mode 100644 src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 133e229f2..9154657d9 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -14,7 +14,6 @@ import hiiragi283.lib.text.Text import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.gui.screen.tooltip.HTMemoryDiscClientTooltipComponent @@ -232,13 +231,6 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0x333399)) } - - register.register(RagiumFluids.ORE_SLURRY) { - still = Material(vanillaId(HTConstants.BLOCK, "white_concrete_powder")) - tintSource = FluidStackTintSource { stack: FluidStack -> - ARGB.opaque(HTOreSlurryDataHelper.getData(stack)?.color ?: 0x333300) - } - } } override fun registerScreens(event: RegisterMenuScreensEvent) { 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 a143a1995..330a8f932 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -17,10 +17,7 @@ import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.registry.asHolderSequence import hiiragi283.lib.registry.getKeyOrThrow import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.RagiumDataComponents -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen @@ -29,6 +26,7 @@ import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCateg import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTRefiningRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTResourceExtractingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTWashingRecipeCategory import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.recipe.RTPotionBottleDrainingRecipe @@ -51,10 +49,7 @@ import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.Item import net.minecraft.world.item.alchemy.Potion import net.minecraft.world.item.alchemy.Potions -import net.minecraft.world.item.crafting.display.SlotDisplay -import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.crafting.display.FluidTagSlotDisplay @JeiPlugin class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { @@ -82,11 +77,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { // Creative Tank registration.registerFromDataComponentTypes(RagiumBlocks.CREATIVE_TANK.asItem(), RagiumDataComponents.FLUID) - // Ore Slurry Bucket - registration.registerFromDataComponentTypes( - RagiumFluids.ORE_SLURRY.bucketHolder.get(), - RagiumDataComponents.ORE_SLURRY_DATA - ) } override fun registerFluidSubtypes( @@ -97,10 +87,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { NeoForgeTypes.FLUID_STACK, RagiumFluids.POTION.getOrThrow() ) { stack: FluidStack, _ -> HTPotionHelper.getContents(stack) } - registration.registerSubtypeInterpreter( - NeoForgeTypes.FLUID_STACK, - RagiumFluids.ORE_SLURRY.getOrThrow() - ) { stack: FluidStack, _ -> HTOreSlurryDataHelper.getHolder(stack) } } override fun registerIngredients(registration: IModIngredientRegistration) { @@ -115,13 +101,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { .map(HTPotionHelper::createFluid) .toList() ) - registration.addExtraIngredients( - NeoForgeTypes.FLUID_STACK, - HTPhysicalSideHelper.registryOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .asHolderSequence() - .map(HTOreSlurryDataHelper::createFluid) - .toList() - ) } override fun registerCategories(registration: IRecipeCategoryRegistration) { @@ -146,6 +125,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { RTElectrolyzingRecipeCategory(guiHelper), HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MIXING), RTReactingRecipeCategory(guiHelper), + RTWashingRecipeCategory(guiHelper), // Bio HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BREWING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING), @@ -174,6 +154,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BATHING, RagiumRecipeLookups.BATHING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.MIXING, RagiumRecipeLookups.MIXING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.REACTING, RagiumRecipeLookups.REACTING) + HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.WASHING, RagiumRecipeLookups.WASHING) // Bio HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.BREWING, RagiumRecipeLookups.BREWING) HTJeiRecipeHelper.addRecipes(registration, RagiumJeiRecipeTypes.PLANTING, RagiumRecipeLookups.PLANTING) @@ -238,34 +219,6 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { }.toList() ) // Chemical - registration.addRecipes( - RagiumJeiRecipeTypes.MIXING, - listItems() - .mapNotNull { input: Holder -> - val result: FluidStack = - HTOreSlurryDataHelper.createFluid(input.components()) ?: return@mapNotNull null - RagiumRecipeBuilders.mixing { - itemIngredient = HTJeiRecipeHelper.fakeItem(SlotDisplay.ItemSlotDisplay(input)) - fluidIngredient = HTJeiRecipeHelper.fakeFluid(RagiumFluids.SULFURIC_ACID) - result { from(result) } - recipeId replace input.getKeyOrThrow().identifier().withPrefix("solving/") - }.buildSynthetic() - }.toList() - ) - - registration.addRecipes( - RagiumJeiRecipeTypes.REACTING, - HTPhysicalSideHelper.registryOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .asHolderSequence() - .map { holder: Holder -> - RagiumRecipeBuilders.reacting { - primaryIngredient = HTJeiRecipeHelper.fakeFluid(HTOreSlurryDataHelper.createFluid(holder)) - secondaryIngredient = HTJeiRecipeHelper.fakeFluid(FluidTagSlotDisplay(Tags.Fluids.WATER)) - +holder.value().result - recipeId replace holder.getKeyOrThrow().identifier().withPrefix("ore_slurry/") - }.buildSynthetic() - }.toList() - ) } override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { 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 11d0e340e..f3a83b664 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -14,6 +14,7 @@ import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe +import hiiragi283.ragium.api.recipe.RTWashingRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.block.RagiumBlocks @@ -81,6 +82,10 @@ data object RagiumJeiRecipeTypes { val REACTING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) + @JvmField + val WASHING: HTHolderJeiRecipeType = + HTJeiRecipeType(RagiumRecipeTypes.WASHING, RagiumBlocks.MACHINE_CASING) + // Bio @JvmField val BREWING: HTHolderJeiRecipeType = diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt new file mode 100644 index 000000000..bbf191ac6 --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt @@ -0,0 +1,49 @@ +package hiiragi283.ragium.client.integration.jei.category + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory +import hiiragi283.ragium.api.recipe.RTWashingRecipe +import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class RTWashingRecipeCategory(guiHelper: IGuiHelper) : + HTHolderRecipeCategory( + guiHelper, + RagiumJeiRecipeTypes.WASHING, + 18 * 8, + 18 * 1, + RTWashingRecipe.CODEC + ) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RTWashingRecipe, focuses: IFocusGroup) { + // inputs + builder + .addInputSlot(getPosition(0), getPosition(0)) + .add(recipe.fluidIngredient) + .setSlotBackground(HTBackgroundType.INPUT) + builder + .addInputSlot(getPosition(2), getPosition(0)) + .add(recipe.itemIngredient) + .setSlotBackground(HTBackgroundType.INPUT) + // outputs + builder + .addOutputSlot(getPosition(5), getPosition(0)) + .add(recipe.results.head) + .setSlotBackground(HTBackgroundType.OUTPUT) + + val slot: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(7), getPosition(0)) + .setSlotBackground(HTBackgroundType.EXTRA_OUTPUT) + recipe.results.getOrNull(1)?.let(slot::add) + } + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTWashingRecipe, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + builder.addRecipePlus(getPosition(6)) + } +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index f8f11c48e..9bc184cb0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -4,7 +4,6 @@ import hiiragi283.lib.data.createLootTables import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.element.RagiumElements -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.world.RagiumDamageTypes import hiiragi283.ragium.data.advancement.RagiumAdvancementProvider import hiiragi283.ragium.data.lang.RagiumEnglishLangProvider @@ -43,7 +42,6 @@ data object RagiumDataGen { .add(Registries.DAMAGE_TYPE, RagiumDamageTypes::bootstrap) .add(RagiumRegistries.Keys.ELEMENT, RagiumElements::bootstrap) .add(RagiumRegistries.Keys.CHEMICAL, RagiumChemicals::bootstrap) - .add(RagiumRegistries.Keys.ORE_SLURRY_DATA, RagiumOreSlurryData::bootstrap) .apply(RagiumWorldData::bootstrap) ) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index a0b0503a5..c544998fa 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -6,7 +6,6 @@ import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.element.RagiumElements -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.advancment.RagiumAdvancementKeys @@ -123,9 +122,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") addFluid(RagiumFluids.BLEACH, "Bleach") addFluid(RagiumFluids.CAOH_SOLUTION, "Calcium Hydroxide Solution") - - add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "Invalid Ore Slurry") - add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s Bucket") // Item add(RagiumItems.BAMBOO_CHARCOAL, "Bamboo Charcoal") add(RagiumItems.PARTICLE_BOARD, "Particle Board") @@ -135,11 +131,11 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.STICKY_BALL, "Sticky Ball") add(RagiumItems.PLASTIC_PLATE, "Plastic Plate") add(RagiumItems.SYNTHETIC_FEATHER, "Synthetic Feather") + add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.CARBON_FIBER, "Carbon Fiber") add(RagiumItems.CFRP_PLATE, "CFRP Plate") add(RagiumItems.ALCLAD_PLATE, "Alclad Plate") - add(RagiumItems.SYNTHETIC_LEATHER, "Synthetic Leather") add(RagiumItems.BEESWAX, "Beeswax") add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") @@ -187,6 +183,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumRecipeTypes.CENTRIFUGING, "Centrifuging") add(RagiumRecipeTypes.MIXING, "Mixing") add(RagiumRecipeTypes.REACTING, "Chemical Reacting") + add(RagiumRecipeTypes.WASHING, "Washing") add(RagiumRecipeTypes.BREWING, "Brewing") add(RagiumRecipeTypes.PLANTING, "Planting") @@ -291,10 +288,5 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumElements.COPPER, "Copper") addFromKey(RagiumElements.GOLD, "Gold") - // Ore Slurry - addFromKey(RagiumOreSlurryData.COPPER, "Copper Ore Slurry") - addFromKey(RagiumOreSlurryData.IRON, "Iron Ore Slurry") - addFromKey(RagiumOreSlurryData.GOLD, "Gold Ore Slurry") - addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "Ancient Debris Slurry") } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 98197ca87..a1c7c0f1d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -6,7 +6,6 @@ import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.data.element.RagiumElements -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.advancment.RagiumAdvancementKeys @@ -119,9 +118,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") addFluid(RagiumFluids.BLEACH, "漂白剤") addFluid(RagiumFluids.CAOH_SOLUTION, "水酸化カルシウム水溶液") - - add(RagiumFluids.ORE_SLURRY.getFluidType().descriptionId, "無効な鉱石泥") - add(RagiumFluids.ORE_SLURRY.bucketHolder, $$"%1$s入りバケツ") // Item add(RagiumItems.BAMBOO_CHARCOAL, "竹炭") add(RagiumItems.PARTICLE_BOARD, "パーティクルボード") @@ -131,11 +127,11 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.STICKY_BALL, "粘着質な塊") add(RagiumItems.PLASTIC_PLATE, "プラスチック板") add(RagiumItems.SYNTHETIC_FEATHER, "合成羽") + add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.CARBON_FIBER, "炭素繊維") add(RagiumItems.CFRP_PLATE, "炭素繊維強化プラスチック板") add(RagiumItems.ALCLAD_PLATE, "アルクラッド板") - add(RagiumItems.SYNTHETIC_LEATHER, "合成牛皮") add(RagiumItems.BEESWAX, "密猟") add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") add(RagiumItems.LINGERING_BOTTLE, "残留瓶") @@ -183,6 +179,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumRecipeTypes.CENTRIFUGING, "遠心分離") add(RagiumRecipeTypes.MIXING, "混合") add(RagiumRecipeTypes.REACTING, "化学反応") + add(RagiumRecipeTypes.WASHING, "洗浄") add(RagiumRecipeTypes.BREWING, "醸造") add(RagiumRecipeTypes.PLANTING, "栽培") @@ -287,10 +284,5 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumElements.COPPER, "銅") addFromKey(RagiumElements.GOLD, "金") - // Ore Slurry - addFromKey(RagiumOreSlurryData.COPPER, "銅の鉱石泥") - addFromKey(RagiumOreSlurryData.IRON, "鉄の鉱石泥") - addFromKey(RagiumOreSlurryData.GOLD, "金の鉱石泥") - addFromKey(RagiumOreSlurryData.NETHERITE_SCRAP, "古代の鉱石泥") } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index b2f72d3fe..6925b46af 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -47,8 +47,6 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP add(RagiumFluids.CRUDE_OIL) add(RagiumFluids.SYNTHETIC_RESIN) add(RagiumFluids.SULFURIC_ACID) - - add(RagiumFluids.ORE_SLURRY) } for (content: HTFluidContent in RagiumFluids.REGISTER.asSequence()) { // Item diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index f7a4abf19..aefa190ea 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -4,17 +4,22 @@ import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders +import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.RagiumTags +import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.world.item.Items +import net.neoforged.neoforge.common.Tags import java.util.concurrent.CompletableFuture class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + washing() + // Wood Pulp + Resin -> Particle Board RagiumRecipeBuilders.bathing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } @@ -33,7 +38,7 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } result { +Items.STICKY_PISTON } }.save(exporter) - + // Cement + Water -> Mortar RagiumRecipeBuilders.bathing { itemIngredient { items { +RagiumItems.CEMENT } } @@ -45,5 +50,97 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu }.save(exporter) } + private fun washing() { + // Sand + Water -> SiO2 + Borax + RagiumRecipeBuilders.washing { + itemIngredient { + +holderSet(Tags.Items.SANDS_COLORLESS) + count = 4 + } + fluidIngredient { +waterSet() } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 3 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BORAX) } + recipeId suffix "_from_sands" + }.save(exporter) + // Red Sand + Water -> SiO2 + Bauxite + RagiumRecipeBuilders.washing { + itemIngredient { + +holderSet(Tags.Items.SANDS_RED) + count = 4 + } + fluidIngredient { +waterSet() } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 3 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BAUXITE) } + recipeId suffix "_from_red_sands" + }.save(exporter) + // Blue Ice + HF (aq) -> Packed Ice + Cryolite + RagiumRecipeBuilders.washing { + itemIngredient { items { +Items.BLUE_ICE } } + fluidIngredient { +holderSet(RagiumFluids.HYDROFLUORIC_ACID) } + result { + +Items.PACKED_ICE + count = 6 + } + result { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + }.save(exporter) + + // Ancient Debris -> Netherite Scrap + RagiumRecipeBuilders.washing { + itemIngredient { items { +Items.ANCIENT_DEBRIS } } + fluidIngredient { + +holderSet(RagiumFluids.HYDROFLUORIC_ACID) + amount /= 4 + } + result { + +Items.NETHERITE_SCRAP + count = 3 + } + recipeId suffix "_from_debris" + }.save(exporter) + // Raw XX -> XX Dust + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.COPPER) } + fluidIngredient { + +holderSet(RagiumFluids.SULFURIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) + count = 3 + } + recipeId suffix "_from_raw" + }.save(exporter) + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.IRON) } + fluidIngredient { + +holderSet(RagiumFluids.SULFURIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.IRON) + count = 2 + } + recipeId suffix "_from_raw" + }.save(exporter) + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.GOLD) } + fluidIngredient { + +holderSet(RagiumFluids.NITRIC_ACID) + amount /= 4 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.GOLD) + count = 2 + } + recipeId suffix "_from_raw" + }.save(exporter) + } + override fun getName(): String = "Chemical Recipes" } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 7419a5019..89adb2105 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -450,6 +450,8 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } setOf( + Tags.Items.SANDSTONE_UNCOLORED_BLOCKS to Items.SAND, + Tags.Items.SANDSTONE_RED_BLOCKS to Items.RED_SAND, RagiumTags.BlockItem.QUARTZ_BLOCKS.item to Items.QUARTZ ).forEach { (block: TagKey, base: Item) -> RagiumRecipeBuilders.crushing { @@ -460,39 +462,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable } }.save(exporter) } - // Sandstone -> 4x Sand + Niter - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(Tags.Items.SANDSTONE_UNCOLORED_BLOCKS) } - result { - +Items.SAND - count = 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.NITER) - } - }.save(exporter) - // Red Sandstone -> 4x Red Sand + Bauxite - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(Tags.Items.SANDSTONE_RED_BLOCKS) } - result { - +Items.RED_SAND - count = 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BAUXITE) - } - }.save(exporter) - // Blue Ice -> 9x Packed Ice + Cryolite - RagiumRecipeBuilders.crushing { - ingredient { items { +Items.BLUE_ICE } } - result { - +Items.PACKED_ICE - count = 9 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.CRYOLITE) - } - }.save(exporter) // Book -> 3x Paper Pulp RagiumRecipeBuilders.crushing { diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 189c18db1..fe69d2f00 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -73,7 +73,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(HTCommonTags.Items.PITCH_COKE).add(RagiumItems.PITCH_COKE) builder(HTCommonTags.Items.PLASTICS).add(RagiumItems.PLASTIC_PLATE) builder(HTCommonTags.Items.SILICON).add(RagiumItems.CRUDE_SILICON) - builder(Tags.Items.SLIME_BALLS) + builder(HTCommonTags.Items.STICKY_BALLS) .addTag(Tags.Items.SLIME_BALLS) .add(RagiumItems.STICKY_BALL) diff --git a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json b/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json deleted file mode 100644 index 2ba314b92..000000000 --- a/src/generated/resources/assets/ragium/items/ore_slurry_bucket.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "model": { - "type": "neoforge:fluid_container", - "apply_fluid_luminosity": false, - "fluid": "ragium:ore_slurry", - "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/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index a1b976777..05e991776 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -92,7 +92,6 @@ "block.ragium.nitrogen": "Nitrogen", "block.ragium.ominous_flux": "Ominous Flux", "block.ragium.orange_dye": "Orange Dye", - "block.ragium.ore_slurry": "Invalid Ore Slurry", "block.ragium.oxygen": "Oxygen", "block.ragium.pink_dye": "Pink Dye", "block.ragium.pitch_coke_block": "Block of Pitch Coke", @@ -281,7 +280,6 @@ "item.ragium.obsidian_dust": "Obsidian Dust", "item.ragium.ominous_flux_bucket": "Ominous Flux Bucket", "item.ragium.orange_dye_bucket": "Orange Dye Bucket", - "item.ragium.ore_slurry_bucket": "%1$s Bucket", "item.ragium.oxygen_bucket": "Oxygen Bucket", "item.ragium.paper_dust": "Paper Pulp", "item.ragium.particle_board": "Particle Board", @@ -376,10 +374,6 @@ "ragium.element.ragium.silicon": "Silicon", "ragium.element.ragium.sodium": "Sodium", "ragium.element.ragium.sulfur": "Sulfur", - "ragium.ore_slurry_data.ragium.copper": "Copper Ore Slurry", - "ragium.ore_slurry_data.ragium.gold": "Gold Ore Slurry", - "ragium.ore_slurry_data.ragium.iron": "Iron Ore Slurry", - "ragium.ore_slurry_data.ragium.netherite_scrap": "Ancient Debris Slurry", "recipe_type.ragium.alloying": "Alloying", "recipe_type.ragium.assembling": "Assembling", "recipe_type.ragium.bathing": "Chemical Bathing", @@ -400,6 +394,7 @@ "recipe_type.ragium.reacting": "Chemical Reacting", "recipe_type.ragium.refining": "Refining", "recipe_type.ragium.resource.extracting": "Resource Extracting", + "recipe_type.ragium.washing": "Washing", "tag.fluid.c.alumina_solution": "Alumina Solution", "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 3dabc55b3..ef204c5a6 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -92,7 +92,6 @@ "block.ragium.nitrogen": "窒素", "block.ragium.ominous_flux": "不吉な流動体", "block.ragium.orange_dye": "橙色の染料", - "block.ragium.ore_slurry": "無効な鉱石泥", "block.ragium.oxygen": "酸素", "block.ragium.pink_dye": "桃色の染料", "block.ragium.pitch_coke_block": "ピッチコークスブロック", @@ -281,7 +280,6 @@ "item.ragium.obsidian_dust": "黒曜石の粉", "item.ragium.ominous_flux_bucket": "不吉な流動体入りバケツ", "item.ragium.orange_dye_bucket": "橙色の染料入りバケツ", - "item.ragium.ore_slurry_bucket": "%1$s入りバケツ", "item.ragium.oxygen_bucket": "酸素入りバケツ", "item.ragium.paper_dust": "紙パルプ", "item.ragium.particle_board": "パーティクルボード", @@ -376,10 +374,6 @@ "ragium.element.ragium.silicon": "ケイ素", "ragium.element.ragium.sodium": "ナトリウム", "ragium.element.ragium.sulfur": "硫黄", - "ragium.ore_slurry_data.ragium.copper": "銅の鉱石泥", - "ragium.ore_slurry_data.ragium.gold": "金の鉱石泥", - "ragium.ore_slurry_data.ragium.iron": "鉄の鉱石泥", - "ragium.ore_slurry_data.ragium.netherite_scrap": "古代の鉱石泥", "recipe_type.ragium.alloying": "合金", "recipe_type.ragium.assembling": "組立", "recipe_type.ragium.bathing": "化学洗浄", @@ -400,6 +394,7 @@ "recipe_type.ragium.reacting": "化学反応", "recipe_type.ragium.refining": "蒸留", "recipe_type.ragium.resource.extracting": "資源採集", + "recipe_type.ragium.washing": "洗浄", "tag.fluid.c.alumina_solution": "アルミナ水溶液", "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", diff --git a/src/generated/resources/data/c/tags/fluid/ore_slurry.json b/src/generated/resources/data/c/tags/fluid/ore_slurry.json deleted file mode 100644 index 146623480..000000000 --- a/src/generated/resources/data/c/tags/fluid/ore_slurry.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:ore_slurry" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 70f248161..d2f068b5f 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -41,7 +41,6 @@ "#c:buckets/nitric_acid", "#c:buckets/nitrogen", "#c:buckets/ominous_flux", - "#c:buckets/ore_slurry", "#c:buckets/oxygen", "#c:buckets/potion", "#c:buckets/resin", diff --git a/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json b/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json deleted file mode 100644 index 588595b60..000000000 --- a/src/generated/resources/data/c/tags/item/buckets/ore_slurry.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:ore_slurry_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json deleted file mode 100644 index b26e843e0..000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/copper.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#c15a36", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/copper" - }, - "count": 3, - "fallback": { - "id": "ragium:copper_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json deleted file mode 100644 index 02ef20bc8..000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/gold.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#ffcc00", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/gold" - }, - "count": 2, - "fallback": { - "id": "ragium:gold_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json deleted file mode 100644 index de10c1c78..000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/iron.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "color": "#777777", - "result": { - "type": "ragium:with_fallback", - "base": { - "type": "ragium:tag", - "tag": "#c:dusts/iron" - }, - "count": 2, - "fallback": { - "id": "ragium:iron_dust" - } - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json b/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json deleted file mode 100644 index d656b3144..000000000 --- a/src/generated/resources/data/ragium/ragium/ore_slurry_data/netherite_scrap.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "color": "#473e3f", - "result": { - "count": 2, - "id": "minecraft:netherite_scrap" - }, - "title": { - "translate": "ragium.ore_slurry_data.ragium.netherite_scrap" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json b/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json new file mode 100644 index 000000000..14e0f73f0 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/bathing/sticky_piston.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:bathing", + "fluid_ingredient": { + "amount": 125, + "fluids": "#ragium:resins" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:piston" + }, + "result": { + "count": 1, + "id": "minecraft:sticky_piston" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json b/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json deleted file mode 100644 index bb8899831..000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/packed_ice.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "minecraft:blue_ice" - }, - "results": [ - { - "count": 9, - "id": "minecraft:packed_ice" - }, - { - "count": 1, - "id": "ragium:cryolite_dust" - } - ], - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/red_sand.json b/src/generated/resources/data/ragium/recipe/crushing/red_sand.json index e775c5741..fa5904c68 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/red_sand.json +++ b/src/generated/resources/data/ragium/recipe/crushing/red_sand.json @@ -4,15 +4,9 @@ "count": 1, "items": "#c:sandstone/red_blocks" }, - "results": [ - { - "count": 4, - "id": "minecraft:red_sand" - }, - { - "count": 1, - "id": "ragium:bauxite_dust" - } - ], + "result": { + "count": 4, + "id": "minecraft:red_sand" + }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/sand.json b/src/generated/resources/data/ragium/recipe/crushing/sand.json index 82c9ef9e6..74b20e6ea 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/sand.json +++ b/src/generated/resources/data/ragium/recipe/crushing/sand.json @@ -4,15 +4,9 @@ "count": 1, "items": "#c:sandstone/uncolored_blocks" }, - "results": [ - { - "count": 4, - "id": "minecraft:sand" - }, - { - "count": 1, - "id": "ragium:niter_dust" - } - ], + "result": { + "count": 4, + "id": "minecraft:sand" + }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json new file mode 100644 index 000000000..edbb155e2 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:sulfuric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/copper" + }, + "result": { + "count": 3, + "id": "ragium:copper_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json new file mode 100644 index 000000000..728d1f14b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:nitric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/gold" + }, + "result": { + "count": 2, + "id": "ragium:gold_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json new file mode 100644 index 000000000..ff9a3337c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:sulfuric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "#c:raw_materials/iron" + }, + "result": { + "count": 2, + "id": "ragium:iron_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json b/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json new file mode 100644 index 000000000..efc2d1ba4 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/netherite_scrap_from_debris.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:hydrofluoric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:ancient_debris" + }, + "result": { + "count": 3, + "id": "minecraft:netherite_scrap" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/packed_ice.json b/src/generated/resources/data/ragium/recipe/washing/packed_ice.json new file mode 100644 index 000000000..582d0174f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/packed_ice.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:hydrofluoric_acid" + }, + "item_ingredient": { + "count": 1, + "items": "minecraft:blue_ice" + }, + "results": [ + { + "count": 6, + "id": "minecraft:packed_ice" + }, + { + "count": 1, + "id": "ragium:cryolite" + } + ], + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json new file mode 100644 index 000000000..654c22b8a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_red_sands.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 4, + "items": "#c:sands/red" + }, + "results": [ + { + "count": 3, + "id": "ragium:quartz_dust" + }, + { + "count": 1, + "id": "ragium:bauxite_dust" + } + ], + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json new file mode 100644 index 000000000..ff7b409dc --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/quartz_dust_from_sands.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 4, + "items": "#c:sands/colorless" + }, + "results": [ + { + "count": 3, + "id": "ragium:quartz_dust" + }, + { + "count": 1, + "id": "ragium:borax_dust" + } + ], + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt index e46db7e7d..5fb24a418 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToDoubleItemRecipe.kt @@ -44,7 +44,7 @@ interface HTItemToDoubleItemRecipe : */ open class Basic( val ingredient: HTItemIngredient, - val result: Nel, + val results: Nel, override val progressData: HTProgressData ) : HTItemToDoubleItemRecipe, HTProgressRecipe.Simple { @@ -56,7 +56,7 @@ interface HTItemToDoubleItemRecipe : HTItemIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(Basic::ingredient), HTItemResult.CODEC .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) - .forGetter(Basic::result), + .forGetter(Basic::results), HTProgressData.CODEC.forGetter(Basic::progressData) ).apply(instance, factory::create) } @@ -71,7 +71,7 @@ interface HTItemToDoubleItemRecipe : HTItemIngredient.STREAM_CODEC, Basic::ingredient, HTItemResult.STREAM_CODEC.nelOf(), - Basic::result, + Basic::results, HTProgressData.STREAM_CODEC, Basic::progressData, factory::create @@ -83,6 +83,6 @@ interface HTItemToDoubleItemRecipe : override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) override fun apply(input: ItemInstance): Pair = - result.head.create() to result.getOrNull(1).createOrEmpty() + results.head.create() to results.getOrNull(1).createOrEmpty() } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt index c08a4cadf..f094c6351 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConstants.kt @@ -27,6 +27,7 @@ data object RagiumConstants { const val CHEMICAL_BATH = "chemical_bath" const val CHEMICAL_REACTOR = "chemical_reactor" const val MIXER = "mixer" + const val WASHER = "washer" // Bio const val BREWERY = "brewery" @@ -64,6 +65,7 @@ data object RagiumConstants { const val CENTRIFUGING = "centrifuging" const val MIXING = "mixing" const val REACTING = "reacting" + const val WASHING = "washing" // Bio const val BREWING = "brewing" diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt index 2b41d14c0..ff557a823 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumRegistries.kt @@ -8,7 +8,6 @@ import hiiragi283.lib.recipe.result.HTItemResultType import hiiragi283.lib.resource.toId import hiiragi283.ragium.api.data.chemical.HTChemical import hiiragi283.ragium.api.data.element.HTElement -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.core.Registry import net.minecraft.resources.ResourceKey import net.neoforged.bus.api.SubscribeEvent @@ -63,11 +62,6 @@ data object RagiumRegistries { HTElement.DIRECT_CODEC, HTElement.DIRECT_CODEC ) - event.dataPackRegistry( - Keys.ORE_SLURRY_DATA, - HTOreSlurryData.DIRECT_CODEC, - HTOreSlurryData.DIRECT_CODEC - ) } @JvmStatic @@ -113,12 +107,6 @@ data object RagiumRegistries { @JvmField val ELEMENT: ResourceKey> = createKey(HTConstants.ELEMENT) - /** - * @since 26.1.5 - */ - @JvmField - val ORE_SLURRY_DATA: ResourceKey> = createKey("ore_slurry_data") - @JvmStatic private fun createKey(path: String): ResourceKey> = ResourceKey.createRegistryKey(RagiumAPI.MOD_ID.toId(path)) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index 74b1aef61..02c84c37c 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -4,7 +4,6 @@ import hiiragi283.lib.data.DataComponentType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.ragium.api.data.chemical.HTChemical -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryData import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentType import net.minecraft.network.codec.ByteBufCodecs @@ -38,13 +37,6 @@ data object RagiumDataComponents { ItemStackTemplate.STREAM_CODEC ) - /** - * @since 26.1.5 - */ - @JvmField - val ORE_SLURRY_DATA: DataComponentType> = - DataComponentType(HTOreSlurryData.CODEC, HTOreSlurryData.STREAM_CODEC) - /** * @since 26.1.7 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt deleted file mode 100644 index 844915d74..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryData.kt +++ /dev/null @@ -1,50 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import com.mojang.serialization.Codec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import hiiragi283.lib.text.Text -import hiiragi283.ragium.api.RagiumRegistries -import net.minecraft.core.Holder -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.ByteBufCodecs -import net.minecraft.network.codec.StreamCodec -import net.minecraft.util.ExtraCodecs - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -@JvmRecord -data class HTOreSlurryData(val title: Text, val color: Int, val result: HTItemResult) { - companion object { - @JvmField - val DIRECT_CODEC: Codec = HTCodecs.record { instance -> - instance.group( - HTCodecs.TEXT.fieldOf("title").forGetter(HTOreSlurryData::title), - ExtraCodecs.STRING_RGB_COLOR.fieldOf("color").forGetter(HTOreSlurryData::color), - HTItemResult.CODEC.fieldOf(HTConstants.RESULT).forGetter(HTOreSlurryData::result) - ).apply(instance, ::HTOreSlurryData) - } - - @JvmField - val CODEC: Codec> = HTCodecs.holder(RagiumRegistries.Keys.ORE_SLURRY_DATA, DIRECT_CODEC) - - @JvmField - val DIRECT_STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTStreamCodecs.TEXT, - HTOreSlurryData::title, - ByteBufCodecs.VAR_INT, - HTOreSlurryData::color, - HTItemResult.STREAM_CODEC, - HTOreSlurryData::result, - ::HTOreSlurryData - ) - - @JvmField - val STREAM_CODEC: StreamCodec> = - HTStreamCodecs.holder(RagiumRegistries.Keys.ORE_SLURRY_DATA, DIRECT_STREAM_CODEC) - } -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt deleted file mode 100644 index 3d31d0f9f..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryDataHelper.kt +++ /dev/null @@ -1,49 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.text.Text -import hiiragi283.ragium.api.data.RagiumDataComponents -import net.minecraft.core.Holder -import net.minecraft.core.component.DataComponentGetter -import net.minecraft.core.component.DataComponentPatch -import net.minecraft.world.item.ItemStack -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -data object HTOreSlurryDataHelper { - @JvmStatic - fun getHolder(getter: DataComponentGetter): Holder? = - getter.get(RagiumDataComponents.ORE_SLURRY_DATA) - - @JvmStatic - fun getData(getter: DataComponentGetter): HTOreSlurryData? = getHolder(getter)?.value() - - @JvmStatic - fun getTitle(getter: DataComponentGetter): Text? = getData(getter)?.title - - @JvmStatic - fun createPatch(holder: Holder): DataComponentPatch = - buildDataPatch { set(RagiumDataComponents.ORE_SLURRY_DATA, holder) } - - @JvmStatic - fun copyToPatch(getter: DataComponentGetter): DataComponentPatch? = getHolder(getter)?.let(::createPatch) - - @JvmStatic - fun createFluid(holder: Holder, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = - HTOreSlurryFluidAccess.INSTANCE.fluidContent.toStack(amount, createPatch(holder)) - - @JvmStatic - fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack? = - getHolder(getter)?.let { createFluid(it, amount) } - - @JvmStatic - fun createBucket(holder: Holder): ItemStack = - HTOreSlurryFluidAccess.INSTANCE.fluidContent.bucketHolder.toStack(patch = createPatch(holder)) - - @JvmStatic - fun createBucket(getter: DataComponentGetter): ItemStack? = getHolder(getter)?.let(::createBucket) -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt deleted file mode 100644 index 85ec3ac7c..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/HTOreSlurryFluidAccess.kt +++ /dev/null @@ -1,20 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.ragium.api.RagiumAPI - -/** - * @author Hiiragi Tsubasa - * @since 26.1.5 - */ -interface HTOreSlurryFluidAccess { - companion object { - @JvmField - val INSTANCE: HTOreSlurryFluidAccess = RagiumAPI.getService() - } - - /** - * Ragiumで登録される鉱石泥のインスタンス - */ - val fluidContent: HTFluidContent -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt deleted file mode 100644 index 90c231191..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/oreSlurry/RagiumOreSlurryData.kt +++ /dev/null @@ -1,78 +0,0 @@ -package hiiragi283.ragium.api.data.oreSlurry - -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.registry.HTSimpleDeferredItem -import hiiragi283.lib.registry.createKey -import hiiragi283.lib.resource.toLanguageKey -import hiiragi283.lib.text.translatableText -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.material.HTItemPart -import hiiragi283.ragium.api.material.RagiumMaterial -import net.minecraft.core.HolderGetter -import net.minecraft.core.registries.Registries -import net.minecraft.data.worldgen.BootstrapContext -import net.minecraft.resources.ResourceKey -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStackTemplate -import net.minecraft.world.item.Items - -data object RagiumOreSlurryData { - @JvmField - val COPPER: ResourceKey = create("copper") - - @JvmField - val IRON: ResourceKey = create("iron") - - @JvmField - val GOLD: ResourceKey = create("gold") - - /** - * @since 26.1.7 - */ - @JvmField - val NETHERITE_SCRAP: ResourceKey = create("netherite_scrap") - - @JvmStatic - private fun create(name: String): ResourceKey = - RagiumRegistries.Keys.ORE_SLURRY_DATA.createKey(RagiumAPI.id(name)) - - @JvmStatic - fun bootstrap(context: BootstrapContext) { - val getter: HolderGetter = context.lookup(Registries.ITEM) - - fun register(key: ResourceKey, color: Int, result: HTItemResult) { - context.register( - key, - HTOreSlurryData(translatableText(key.toLanguageKey()), color, result) - ) - } - - fun register( - key: ResourceKey, - color: Int, - part: HTItemPart, - material: RagiumMaterial, - count: Int = 1 - ) { - val tagEntry = HTItemResult.TagEntry(getter.getOrThrow(part.tagPrefix.itemTagKey(material))) - val fallback = HTSimpleDeferredItem(RagiumAPI.id(part.createName(material))) - val entry: HTItemResult.Entry = if (fallback.isBound) { - HTItemResult.WithFallbackEntry(tagEntry, HTItemResult.SimpleEntry(fallback)) - } else { - tagEntry - } - register( - key, - color, - entry.toResult(count) - ) - } - - register(COPPER, 0xc15a36, HTItemPart.DUST, RagiumMaterial.Metal.COPPER, 3) - register(IRON, 0x777777, HTItemPart.DUST, RagiumMaterial.Metal.IRON, 2) - register(GOLD, 0xffcc00, HTItemPart.DUST, RagiumMaterial.Metal.GOLD, 2) - - register(NETHERITE_SCRAP, 0x473e3f, HTItemResult(ItemStackTemplate(Items.NETHERITE_SCRAP, 2))) - } -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt new file mode 100644 index 000000000..b0678578d --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTWashingRecipeBuilder.kt @@ -0,0 +1,64 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.util.HTDelegates +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTWashingRecipe +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.resources.Identifier +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTWashingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.WASHING) { + override fun getRecipeId(): Identifier? = results.first().getId() + + override fun createRecipe(): RTWashingRecipe = + RTWashingRecipe(itemIngredient, fluidIngredient, results.toNel(), progressData) + + // Ingredient + var itemIngredient: HTItemIngredient by HTDelegates.onceInitialize() + + var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() + + operator fun HTItemIngredient.unaryPlus() { + itemIngredient = this + } + + operator fun HTFluidIngredient.unaryPlus() { + fluidIngredient = this + } + + inline fun itemIngredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) + } + + inline fun fluidIngredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + // Result + @PublishedApi internal val results: MutableList = ObjectArrayList() + + inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + results += HTItemResultBuilder.build(builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index d44734c42..63e983c21 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -188,6 +188,14 @@ data object RagiumRecipeBuilders { return RTReactingRecipeBuilder().apply(builderAction) } + @JvmStatic + inline fun washing(builderAction: RTWashingRecipeBuilder.() -> Unit): RTWashingRecipeBuilder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return RTWashingRecipeBuilder().apply(builderAction) + } + // Bio @JvmStatic inline fun brewing( diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt new file mode 100644 index 000000000..30e0d2609 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt @@ -0,0 +1,81 @@ +package hiiragi283.ragium.api.recipe + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.recipe.HTRecipeType +import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe +import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.createOrEmpty +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.compactNelFieldOf +import hiiragi283.lib.serialization.network.nelOf +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.RecipeSerializer +import net.neoforged.neoforge.fluids.FluidInstance + +@JvmRecord +data class RTWashingRecipe( + val itemIngredient: HTItemIngredient, + val fluidIngredient: HTFluidIngredient, + val results: Nel, + override val progressData: HTProgressData +) : HTItemAndFluidToRecipe>, + HTProgressRecipe.Simple, + HTSerializableRecipe { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTItemIngredient.CODEC + .fieldOf(HTConstants.ITEM_INGREDIENT) + .forGetter(RTWashingRecipe::itemIngredient), + HTFluidIngredient.CODEC + .fieldOf(HTConstants.FLUID_INGREDIENT) + .forGetter(RTWashingRecipe::fluidIngredient), + HTItemResult.CODEC + .compactNelFieldOf(HTConstants.RESULT, HTConstants.RESULTS, 2) + .forGetter(RTWashingRecipe::results), + HTProgressData.CODEC.forGetter(RTWashingRecipe::progressData) + ).apply(instance, ::RTWashingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTItemIngredient.STREAM_CODEC, + RTWashingRecipe::itemIngredient, + HTFluidIngredient.STREAM_CODEC, + RTWashingRecipe::fluidIngredient, + HTItemResult.STREAM_CODEC.nelOf(), + RTWashingRecipe::results, + HTProgressData.STREAM_CODEC, + RTWashingRecipe::progressData, + ::RTWashingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + } + + override fun test(first: ItemInstance, second: FluidInstance): Boolean = + itemIngredient.test(first) && fluidIngredient.test(second) + + override fun apply(first: ItemInstance, second: FluidInstance): Pair = + results.head.create() to results.getOrNull(1).createOrEmpty() + + override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = + itemIngredient.getMatchingStack(first) to fluidIngredient.getMatchingStack(second) + + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.WASHING + + override fun getType(): HTRecipeType = RagiumRecipeTypes.WASHING +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 69c95d1c7..5ae523a5a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -80,6 +80,9 @@ data object RagiumRecipeLookups { @JvmField val REACTING: HTCompoundRecipeLookup = create(RagiumConstants.REACTING) + @JvmField + val WASHING: HTRecipeLookup = create(RagiumRecipeTypes.WASHING) + // Bio @JvmField val BREWING: HTCompoundRecipeLookup = create(RagiumConstants.BREWING) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt index e79023fa6..6e7fdccce 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeSerializers.kt @@ -99,6 +99,10 @@ data object RagiumRecipeSerializers { val REACTING: RecipeSerializer = register(RagiumConstants.REACTING, RTReactingRecipe.Basic.SERIALIZER) + @JvmField + val WASHING: RecipeSerializer = + register(RagiumConstants.WASHING, RTWashingRecipe.SERIALIZER) + // Bio @JvmField val BREWING: RecipeSerializer = diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index ec771be79..3a3f03ef8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -76,6 +76,9 @@ data object RagiumRecipeTypes { @JvmField val REACTING: HTRecipeType = create(RagiumConstants.REACTING) + @JvmField + val WASHING: HTRecipeType = create(RagiumConstants.WASHING) + // Bio @JvmField val BREWING: HTRecipeType = create(RagiumConstants.BREWING) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt index c77df37a9..297c56d54 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt @@ -24,7 +24,7 @@ class HTItemAndFluidToItemRecipeCategory( recipe: HTItemAndFluidToRecipe.BasicItem, focuses: IFocusGroup ) { - // input + // inputs builder .addInputSlot(getPosition(0), getPosition(0)) .add(recipe.fluidIngredient) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt index dfe2070df..8ca08995c 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt @@ -30,16 +30,16 @@ class HTItemToDoubleItemRecipeCategory( .addInputSlot(getPosition(0), getPosition(0)) .add(recipe.ingredient) .setSlotBackground(HTBackgroundType.INPUT) - // output + // outputs builder .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.result.head) + .add(recipe.results.head) .setSlotBackground(HTBackgroundType.OUTPUT) val slot: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(5), getPosition(0)) .setSlotBackground(HTBackgroundType.EXTRA_OUTPUT) - recipe.result.getOrNull(1)?.let(slot::add) + recipe.results.getOrNull(1)?.let(slot::add) } override fun setupRecipeExtras( diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index fe2efe0db..a37d0c6c2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -92,7 +92,6 @@ data object Ragium : HTCommonMod() { helper.register(RagiumAPI.id(HTConstants.ENERGY), RagiumDataComponents.ENERGY) helper.register(RagiumAPI.id(HTConstants.FLUID), RagiumDataComponents.FLUID) helper.register(RagiumAPI.id("memory_disc_data"), RagiumDataComponents.MEMORY_DISC_DATA) - helper.register(RagiumAPI.id("ore_slurry_data"), RagiumDataComponents.ORE_SLURRY_DATA) helper.register(RagiumAPI.id("owner_id"), RagiumDataComponents.OWNER_ID) } event.register(Registries.MENU) { helper -> diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 2315c110d..0410d3db0 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -25,8 +25,6 @@ import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.common.fluid.RagiumFluids -import hiiragi283.ragium.common.recipe.RTOreSlurryWashingRecipe -import hiiragi283.ragium.common.recipe.RTOreSolvingRecipe import hiiragi283.ragium.common.recipe.RTPotionBottleDrainingRecipe import hiiragi283.ragium.common.recipe.RTPotionBottleFillingRecipe import it.unimi.dsi.fastutil.objects.ObjectArrayList @@ -235,13 +233,6 @@ internal data object RagiumCommon { }.build() } } - - RagiumRecipeLookups.MIXING.addRecipes( - RecipeKey(RagiumAPI.id("/${RagiumConstants.MIXING}", "ore_solvation")) to RTOreSolvingRecipe - ) - RagiumRecipeLookups.REACTING.addRecipes( - RecipeKey(RagiumAPI.id("/${RagiumConstants.REACTING}", "ore_slurry_washing")) to RTOreSlurryWashingRecipe - ) } private fun HolderGetter.Provider.getOrNull(content: HTFluidContent): HolderSet? = diff --git a/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt b/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt deleted file mode 100644 index fff47b235..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/data/oreSlurry/RagiumOreSlurryFluidAccess.kt +++ /dev/null @@ -1,9 +0,0 @@ -package hiiragi283.ragium.common.data.oreSlurry - -import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess -import hiiragi283.ragium.common.fluid.RagiumFluids - -class RagiumOreSlurryFluidAccess : HTOreSlurryFluidAccess { - override val fluidContent: HTFluidContent get() = RagiumFluids.ORE_SLURRY -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt deleted file mode 100644 index a37302eb1..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTOreSlurryFluidType.kt +++ /dev/null @@ -1,15 +0,0 @@ -package hiiragi283.ragium.common.fluid - -import hiiragi283.lib.fluid.HTFluidType -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import net.minecraft.network.chat.Component -import net.minecraft.world.item.ItemStack -import net.neoforged.neoforge.fluids.FluidStack - -class HTOreSlurryFluidType(properties: Properties) : HTFluidType(properties) { - override fun getDescription(stack: FluidStack): Component = - HTOreSlurryDataHelper.getTitle(stack) ?: super.getDescription(stack) - - override fun getBucket(stack: FluidStack): ItemStack = - HTOreSlurryDataHelper.createBucket(stack) ?: super.getBucket(stack) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index 389e32422..ffebf83ff 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -8,7 +8,6 @@ import hiiragi283.lib.resource.toId import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.util.Identity import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.common.item.HTOreSlurryBucketItem import hiiragi283.ragium.common.item.HTPotionBucketItem import hiiragi283.ragium.common.item.component.RagiumConsumables import net.minecraft.core.component.DataComponents @@ -258,12 +257,4 @@ data object RagiumFluids { val CAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("calcium_hydroxide_solution") { properties = liquid() } - - // Other - @JvmField - val ORE_SLURRY: HTFluidContent.Virtual = REGISTER.registerVirtual("ore_slurry") { - properties = liquid() - typeFactory = ::HTOreSlurryFluidType - bucketFactory = ::HTOreSlurryBucketItem - } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt deleted file mode 100644 index 8f9ae32b4..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTOreSlurryBucketItem.kt +++ /dev/null @@ -1,51 +0,0 @@ -package hiiragi283.ragium.common.item - -import hiiragi283.lib.item.HTSubCreativeTabContents -import hiiragi283.lib.text.Text -import hiiragi283.lib.text.translatableText -import hiiragi283.ragium.api.RagiumRegistries -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.common.transfer.item.HTCustomBucketItemHandler -import net.minecraft.core.Holder -import net.minecraft.network.chat.Component -import net.minecraft.world.item.CreativeModeTab -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack -import net.minecraft.world.level.material.Fluid -import net.neoforged.neoforge.transfer.access.ItemAccess -import net.neoforged.neoforge.transfer.fluid.FluidResource -import net.neoforged.neoforge.transfer.item.ItemResource - -class HTOreSlurryBucketItem(properties: Properties) : - Item(properties), - HTSubCreativeTabContents { - constructor(content: Fluid, properties: Properties) : this(properties) - - override fun getName(itemStack: ItemStack): Component { - val oreSlurryName: Text = HTOreSlurryDataHelper.getTitle(itemStack) ?: return super.getName(itemStack) - return translatableText(super.descriptionId, oreSlurryName) - } - - // HTSubCreativeTabContents // - - override fun addItems( - baseItem: Holder, - parameters: CreativeModeTab.ItemDisplayParameters, - output: CreativeModeTab.Output - ) { - parameters.holders() - .lookupOrThrow(RagiumRegistries.Keys.ORE_SLURRY_DATA) - .listElements() - .map(HTOreSlurryDataHelper::createBucket) - .forEach(output::accept) - } - - override fun shouldAddDefault(): Boolean = false - - // BucketHandler // - - class BucketHandler(itemAccess: ItemAccess) : HTCustomBucketItemHandler(itemAccess) { - override fun getResourceFrom(accessResource: ItemResource, index: Int): FluidResource = - HTOreSlurryDataHelper.createFluid(accessResource)?.let(FluidResource::of) ?: FluidResource.EMPTY - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index d7d2b04a8..fcf7e942c 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -12,7 +12,6 @@ import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.chemical.RagiumChemicals -import hiiragi283.ragium.api.data.oreSlurry.RagiumOreSlurryData import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType @@ -251,11 +250,6 @@ data object RagiumItems { { _, access: ItemAccess -> HTPotionBucketItem.BucketHandler(access) }, RagiumFluids.POTION.bucketHolder ) - event.registerItem( - HTFluidCapabilities.item, - { _, access: ItemAccess -> HTOreSlurryBucketItem.BucketHandler(access) }, - RagiumFluids.ORE_SLURRY.bucketHolder - ) // Item } @@ -297,10 +291,5 @@ data object RagiumItems { setHolder(Items.QUARTZ_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) setHolder(Items.QUARTZ, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) - // Ore Slurry - setHolder(Items.RAW_COPPER, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.COPPER) - setHolder(Items.RAW_IRON, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.IRON) - setHolder(Items.RAW_GOLD, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.GOLD) - setHolder(Items.ANCIENT_DEBRIS, RagiumDataComponents.ORE_SLURRY_DATA, RagiumOreSlurryData.NETHERITE_SCRAP) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt deleted file mode 100644 index 1efc43127..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSlurryWashingRecipe.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.ingredient.HTIngredientHelper -import hiiragi283.lib.recipe.input.HTFluidRecipeInput -import hiiragi283.lib.recipe.result.HTItemAndFluidResult -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.api.recipe.RTReactingRecipe -import net.neoforged.neoforge.common.Tags -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidType - -data object RTOreSlurryWashingRecipe : - RTReactingRecipe, - HTProgressRecipe.Simple { - override fun test(first: FluidInstance, second: FluidInstance): Boolean { - // Water - if (!second.`is`(Tags.Fluids.WATER) || second.amount() < FluidType.BUCKET_VOLUME) return false - // Ore Slurry - return HTOreSlurryDataHelper.getHolder(first) != null - } - - override fun apply(first: FluidInstance, second: FluidInstance): HTItemAndFluidResult = - HTOreSlurryDataHelper.getData(first)?.result.let(HTItemAndFluidResult.Companion::from) - - override fun getMatchingStack(first: FluidInstance, second: FluidInstance): Pair = - Pair( - HTIngredientHelper.copyWithAmount(first, FluidType.BUCKET_VOLUME), - HTIngredientHelper.copyWithAmount(second, FluidType.BUCKET_VOLUME) - ) - - override val progressData: HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt deleted file mode 100644 index e0de1baa6..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTOreSolvingRecipe.kt +++ /dev/null @@ -1,32 +0,0 @@ -package hiiragi283.ragium.common.recipe - -import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.ingredient.HTIngredientHelper -import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper -import hiiragi283.ragium.common.fluid.RagiumFluids -import net.minecraft.world.item.ItemInstance -import net.neoforged.neoforge.fluids.FluidInstance -import net.neoforged.neoforge.fluids.FluidStack -import net.neoforged.neoforge.fluids.FluidType - -data object RTOreSolvingRecipe : HTItemAndFluidToFluidRecipe, HTProgressRecipe.Simple { - override fun test(first: ItemInstance, second: FluidInstance): Boolean { - // Sulfuric Acid - if (!second.`is`(RagiumFluids.SULFURIC_ACID.fluidTag) || second.amount() < FluidType.BUCKET_VOLUME) return false - // Ore - return HTOreSlurryDataHelper.getHolder(first) != null - } - - override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = - HTOreSlurryDataHelper.createFluid(first) ?: FluidStack.EMPTY - - override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = Pair( - HTIngredientHelper.copyWithCount(first, 1), - HTIngredientHelper.copyWithAmount(second, FluidType.BUCKET_VOLUME) - ) - - override val progressData: HTProgressData = HTProgressData.time(200) -} diff --git a/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess b/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess deleted file mode 100644 index 9d6970eab..000000000 --- a/src/main/resources/META-INF/services/hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryFluidAccess +++ /dev/null @@ -1 +0,0 @@ -hiiragi283.ragium.common.data.oreSlurry.RagiumOreSlurryFluidAccess From 7abcb41aeddb5b819449ed65e206fb367f074a16 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 27 Sep 2026 21:04:59 +0900 Subject: [PATCH 15/38] =?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=8CPotion=20Tank=20/?= =?UTF-8?q?=20=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=82=AF=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 --- .../hiiragi283/ragium/client/RagiumClient.kt | 3 +- .../client/event/RagiumClientEventHandler.kt | 2 +- .../client/integration/jei/RagiumJeiPlugin.kt | 5 +- .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../data/loot/RagiumBlockLootTableProvider.kt | 1 + .../ragium/data/model/RagiumModelProvider.kt | 6 +- .../recipe/RagiumVanillaRecipeProvider.kt | 7 ++ .../data/tag/RagiumBlockTagsProvider.kt | 4 +- .../ragium/data/tag/RagiumItemTagsProvider.kt | 4 +- .../ragium/blockstates/potion_tank.json | 7 ++ .../assets/ragium/items/potion_tank.json | 6 ++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/block/potion_tank.json | 7 ++ .../tags/block/mineable/pickaxe.json | 1 + .../ragium/loot_table/blocks/potion_tank.json | 32 ++++++++ .../ragium/recipe/shaped/potion_tank.json | 16 ++++ .../ragium/tags/item/show_fluid_tooltips.json | 1 + .../hiiragi283/lib/item/HTItemDropHelper.kt | 11 +++ .../lib/item/alchemy/HTBottleType.kt | 10 +++ .../lib/item/alchemy/HTPotionHelper.kt | 44 ++++++----- .../ingredient/HTPotionFluidIngredient.kt | 2 +- .../lib/recipe/result/HTFluidResult.kt | 12 ++- .../ragium/common/block/RagiumBlocks.kt | 43 ++++++++--- ...luidBusBlock.kt => HTFluidStorageBlock.kt} | 23 +++++- .../block/entity/RagiumBlockEntityTypes.kt | 6 ++ .../entity/storage/HTPotionTankBlockEntity.kt | 48 ++++++++++++ .../common/block/storage/HTPotionTankBlock.kt | 70 ++++++++++++++++++ .../common/block/storage/HTTankBlock.kt | 5 +- .../ragium/common/fluid/HTPotionFluidType.kt | 3 +- .../ragium/common/item/HTPotionBucketItem.kt | 2 +- .../item/block/HTCreativeTankBlockItem.kt | 14 ++-- .../item/block/HTPotionTankBlockItem.kt | 35 +++++++++ .../recipe/RTPotionBottleDrainingRecipe.kt | 3 +- .../textures/block/potion_tank_side.png | Bin 0 -> 243 bytes .../ragium/textures/block/potion_tank_top.png | Bin 0 -> 244 bytes 37 files changed, 379 insertions(+), 58 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/potion_tank.json create mode 100644 src/generated/resources/assets/ragium/items/potion_tank.json create mode 100644 src/generated/resources/assets/ragium/models/block/potion_tank.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/potion_tank.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/potion_tank.json rename src/main/kotlin/hiiragi283/ragium/common/block/entity/{bus/HTFluidBusBlock.kt => HTFluidStorageBlock.kt} (54%) create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/block/storage/HTPotionTankBlock.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/item/block/HTPotionTankBlockItem.kt create mode 100644 src/main/resources/assets/ragium/textures/block/potion_tank_side.png create mode 100644 src/main/resources/assets/ragium/textures/block/potion_tank_top.png diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 9154657d9..033e843a8 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -96,7 +96,7 @@ data object RagiumClient : HTClientMod() { register.register(RagiumFluids.POTION) { dull() tintSource = FluidStackTintSource { stack: FluidStack -> - ARGB.opaque(HTPotionHelper.getContents(stack).color) + ARGB.opaque(HTPotionHelper.getContentsOrEmpty(stack).color) } } register.register(RagiumFluids.OMINOUS_FLUX) { @@ -239,6 +239,7 @@ data object RagiumClient : HTClientMod() { override fun registerEntityRenderer(event: EntityRenderersEvent.RegisterRenderers) { event.registerBlockEntityRenderer(RagiumBlockEntityTypes.TANK.get(), ::HTTankBlockEntityRenderer) + event.registerBlockEntityRenderer(RagiumBlockEntityTypes.POTION_TANK.get(), ::HTTankBlockEntityRenderer) event.registerBlockEntityRenderer(RagiumBlockEntityTypes.CREATIVE_TANK.get(), ::HTTankBlockEntityRenderer) } diff --git a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt index 83d507b37..80671de5a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/event/RagiumClientEventHandler.kt @@ -19,7 +19,7 @@ data object RagiumClientEventHandler { val appender: (Text) -> Unit = event.toolTip::add // Potion Fluid if (RagiumFluids.POTION.isOf(stack)) { - HTPotionHelper.getContents(stack).addToTooltip(event.context, appender, event.flags, stack) + HTPotionHelper.getContentsNotEmpty(stack)?.addToTooltip(event.context, appender, event.flags, stack) } // Chemical Tooltip HTClientChemicalHelper.addToTooltip(stack, appender) diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 330a8f932..2d73a2929 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -75,7 +75,8 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { } } - // Creative Tank + // Tanks + registration.registerFromDataComponentTypes(RagiumBlocks.POTION_TANK.asItem(), RagiumDataComponents.FLUID) registration.registerFromDataComponentTypes(RagiumBlocks.CREATIVE_TANK.asItem(), RagiumDataComponents.FLUID) } @@ -86,7 +87,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { registration.registerSubtypeInterpreter( NeoForgeTypes.FLUID_STACK, RagiumFluids.POTION.getOrThrow() - ) { stack: FluidStack, _ -> HTPotionHelper.getContents(stack) } + ) { stack: FluidStack, _ -> HTPotionHelper.getContentsNotEmpty(stack) } } override fun registerIngredients(registration: IModIngredientRegistration) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index c544998fa..d1c36544d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -75,6 +75,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumBlocks.FLUID_OUTPUT_BUS, "Fluid Output Bus") add(RagiumBlocks.TANK, "Variable Tank") + add(RagiumBlocks.POTION_TANK, "Potion Tank") add(RagiumBlocks.VOID_TANK, "Void Tank") add(RagiumBlocks.CREATIVE_BATTERY, "Creative Battery") add(RagiumBlocks.CREATIVE_TANK, "Creative Tank") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index a1c7c0f1d..b5356d7e0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -71,6 +71,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumBlocks.FLUID_OUTPUT_BUS, "液体搬出バス") add(RagiumBlocks.TANK, "可変タンク") + add(RagiumBlocks.POTION_TANK, "ポーションタンク") add(RagiumBlocks.VOID_TANK, "廃棄タンク") add(RagiumBlocks.CREATIVE_BATTERY, "クリエイティブ用バッテリー") add(RagiumBlocks.CREATIVE_TANK, "クリエイティブ用タンク") diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index 866a0204d..fe25dd5c7 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt @@ -46,6 +46,7 @@ class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : listOf( RagiumBlocks.FLUID_OUTPUT_BUS, RagiumBlocks.TANK, + RagiumBlocks.POTION_TANK, RagiumBlocks.CREATIVE_TANK ).forEach { blockItem: HTSimpleDeferredBlockAndItem -> add(blockItem) { block: Block -> copyComponent(block) { include(RagiumDataComponents.FLUID) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 6925b46af..c259e0ebe 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -127,9 +127,9 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP // Bus generators.createTrivialBlock(RagiumBlocks.FLUID_OUTPUT_BUS.getOrThrow(), TexturedModel.CUBE_TOP_BOTTOM) // Storage - generators.createTrivialBlock(RagiumBlocks.TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) - generators.createTrivialBlock(RagiumBlocks.VOID_TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) - generators.createTrivialBlock(RagiumBlocks.CREATIVE_TANK.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) + for (blockItem: HTSimpleDeferredBlockAndItem in RagiumBlocks.TANKS) { + generators.createTrivialBlock(blockItem.getOrThrow(), HTModelTemplates.Providers.TANK_TEMPLATE) + } } private fun machineModel( diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 93534f945..ae8070dee 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -452,6 +452,13 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut result { +RagiumBlocks.TANK } recipeId suffix "_by_black_steel" }.save(exporter) + // Potion Tank + VanillaRecipeBuilders.shaped { + hollow4() + define('A') { +holderSet(Tags.Items.RODS_BLAZE) } + define('B') { +holderSet(Tags.Items.BUCKETS_EMPTY) } + result { +RagiumBlocks.POTION_TANK } + }.save(exporter) // Void Tank VanillaRecipeBuilders.shaped { hollow8() diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index b3a767364..fa535efa3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -39,10 +39,8 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yield(RagiumBlocks.FLUID_OUTPUT_BUS) - yield(RagiumBlocks.TANK) - yield(RagiumBlocks.VOID_TANK) + yieldAll(RagiumBlocks.TANKS) yield(RagiumBlocks.CREATIVE_BATTERY) - yield(RagiumBlocks.CREATIVE_TANK) }.forEach(pickaxe::add) // Other builder(BlockTags.SLABS) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index fe69d2f00..d38529767 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -86,8 +86,6 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu .addTag(HTCommonTags.Items.PITCH_COKE) builder(RagiumTags.Items.SHOW_FLUID_TOOLTIPS) .add(RagiumBlocks.FLUID_OUTPUT_BUS) - .add(RagiumBlocks.TANK) - .add(RagiumBlocks.VOID_TANK) - .add(RagiumBlocks.CREATIVE_TANK) + .apply { RagiumBlocks.TANKS.forEach { add(it) } } } } diff --git a/src/generated/resources/assets/ragium/blockstates/potion_tank.json b/src/generated/resources/assets/ragium/blockstates/potion_tank.json new file mode 100644 index 000000000..c98021c97 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/potion_tank.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/potion_tank" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/potion_tank.json b/src/generated/resources/assets/ragium/items/potion_tank.json new file mode 100644 index 000000000..0ccff2694 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/potion_tank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/potion_tank" + } +} \ 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 05e991776..ea6d6498b 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -96,6 +96,7 @@ "block.ragium.pink_dye": "Pink Dye", "block.ragium.pitch_coke_block": "Block of Pitch Coke", "block.ragium.planter": "Planter", + "block.ragium.potion_tank": "Potion Tank", "block.ragium.precision_assembler": "Precision Assembler", "block.ragium.purple_dye": "Purple Dye", "block.ragium.pyrolyzer": "Pyrolyzer", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index ef204c5a6..d1b7b03b8 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -96,6 +96,7 @@ "block.ragium.pink_dye": "桃色の染料", "block.ragium.pitch_coke_block": "ピッチコークスブロック", "block.ragium.planter": "栽培機", + "block.ragium.potion_tank": "ポーションタンク", "block.ragium.precision_assembler": "精密組立機", "block.ragium.purple_dye": "紫色の染料", "block.ragium.pyrolyzer": "熱分解炉", diff --git a/src/generated/resources/assets/ragium/models/block/potion_tank.json b/src/generated/resources/assets/ragium/models/block/potion_tank.json new file mode 100644 index 000000000..561839fd2 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/potion_tank.json @@ -0,0 +1,7 @@ +{ + "parent": "ragium:block/tank_template", + "textures": { + "side": "ragium:block/potion_tank_side", + "top": "ragium:block/potion_tank_top" + } +} \ 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 495774f84..5cf13e2bd 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -41,6 +41,7 @@ "ragium:niter_ore", "ragium:pitch_coke_block", "ragium:planter", + "ragium:potion_tank", "ragium:precision_assembler", "ragium:pyrolyzer", "ragium:refinery", diff --git a/src/generated/resources/data/ragium/loot_table/blocks/potion_tank.json b/src/generated/resources/data/ragium/loot_table/blocks/potion_tank.json new file mode 100644 index 000000000..b7594c193 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/potion_tank.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name", + "ragium:owner_id", + "ragium:fluid" + ], + "source": "block_entity" + } + ], + "name": "ragium:potion_tank" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/potion_tank" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/potion_tank.json b/src/generated/resources/data/ragium/recipe/shaped/potion_tank.json new file mode 100644 index 000000000..3b6f7253a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/potion_tank.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:rods/blaze", + "B": "#c:buckets/empty" + }, + "pattern": [ + " A ", + "ABA", + " A " + ], + "result": { + "id": "ragium:potion_tank" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json index a056d1d15..ba40b7b57 100644 --- a/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json +++ b/src/generated/resources/data/ragium/tags/item/show_fluid_tooltips.json @@ -2,6 +2,7 @@ "values": [ "ragium:creative_tank", "ragium:fluid_output_bus", + "ragium:potion_tank", "ragium:tank", "ragium:void_tank" ] diff --git a/src/lib/kotlin/hiiragi283/lib/item/HTItemDropHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/HTItemDropHelper.kt index 7ba077d0b..7c24ad91b 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/HTItemDropHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/HTItemDropHelper.kt @@ -9,6 +9,7 @@ import net.minecraft.world.entity.Entity import net.minecraft.world.entity.item.ItemEntity import net.minecraft.world.entity.player.Player import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.ItemStackTemplate import net.minecraft.world.level.Level import net.neoforged.neoforge.capabilities.Capabilities import net.neoforged.neoforge.transfer.item.ItemUtil @@ -44,6 +45,16 @@ data object HTItemDropHelper { } } + /** + * アイテムをインベントリに入れます。 + * @param player インベントリの所有者 + * @param template インベントリに入れられるアイテム + * @return 正常にアイテムを移動できた場合は`true` + * @since 26.1.8 + */ + @JvmStatic + fun giveStackTo(player: Player, template: ItemStackTemplate): Boolean = giveStackTo(player, template.create()) + /** * アイテムをインベントリに入れます。 * @param player インベントリの所有者 diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt index 63b96023b..aaed3601b 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt @@ -8,9 +8,11 @@ import hiiragi283.lib.resource.vanillaId 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.network.codec.StreamCodec import net.minecraft.resources.Identifier import net.minecraft.util.StringRepresentable +import net.minecraft.world.item.Item /** * ポーション瓶の種類を管理するクラスです。 @@ -32,6 +34,14 @@ enum class HTBottleType(val filledItem: HTSimpleDeferredItem) : StringRepresenta @JvmField val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() + + @JvmStatic + fun getFromFilled(instance: TypedInstance): HTBottleType? = + HTBottleType.entries.firstOrNull { it.filledItem.isOf(instance) } + + @JvmStatic + fun getFromEmpty(instance: TypedInstance): HTBottleType? = + HTBottleType.entries.firstOrNull { it.emptyItem.isOf(instance) } } constructor(filledItem: Identifier) : this(HTSimpleDeferredItem(filledItem)) diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt index f6c0f419d..7058cdfa0 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTPotionHelper.kt @@ -32,11 +32,17 @@ data object HTPotionHelper { * @return 値を保持していない場合は[PotionContents.EMPTY] */ @JvmStatic - fun getContents(getter: DataComponentGetter): PotionContents = + fun getContentsOrEmpty(getter: DataComponentGetter): PotionContents = getter.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY) + /** + * 指定した[getter]から[PotionContents]を取得します。 + * @return 取得した[PotionContents]が空の場合は`null` + * @since 26.1.8 + */ @JvmStatic - fun isEmpty(getter: DataComponentGetter): Boolean = getContents(getter).let(::isEmpty) + fun getContentsNotEmpty(getter: DataComponentGetter): PotionContents? = + getContentsOrEmpty(getter).takeUnless(::isEmpty) /** * 指定した[contents]が空かどうか判定します。 @@ -47,24 +53,26 @@ data object HTPotionHelper { contents == PotionContents.EMPTY || (contents.potion().isEmpty && contents.customEffects.isEmpty()) @JvmStatic - fun hasAnyEffect(getter: DataComponentGetter): Boolean = !getContents(getter).let(::isEmpty) + fun hasAnyEffect(getter: DataComponentGetter): Boolean = !getContentsOrEmpty(getter).let(::isEmpty) // Patch @JvmStatic fun createPotionPatch(getter: DataComponentGetter): DataComponentPatch = - getContents(getter).let(::createPotionPatch) + getContentsNotEmpty(getter)?.let(::createPotionPatch) ?: DataComponentPatch.EMPTY @JvmStatic fun createPotionPatch(potion: Holder): DataComponentPatch = createPotionPatch(PotionContents(potion)) @JvmStatic - fun createPotionPatch(contents: PotionContents): DataComponentPatch = - buildDataPatch { set(DataComponents.POTION_CONTENTS, contents) } + fun createPotionPatch(contents: PotionContents): DataComponentPatch = when { + isEmpty(contents) -> DataComponentPatch.EMPTY + else -> buildDataPatch { set(DataComponents.POTION_CONTENTS, contents) } + } // Potion Id @JvmStatic - fun getPotionId(getter: DataComponentGetter): Identifier? = getContents(getter).let(::getPotionId) + fun getPotionId(getter: DataComponentGetter): Identifier? = getContentsOrEmpty(getter).let(::getPotionId) @JvmStatic fun getPotionId(contents: PotionContents): Identifier? = contents @@ -77,7 +85,7 @@ data object HTPotionHelper { @JvmStatic fun getPotionName(getter: DataComponentGetter, bottleType: HTBottleType): Text = - getPotionName(getContents(getter), bottleType) + getPotionName(getContentsOrEmpty(getter), bottleType) @JvmStatic fun getPotionName(contents: PotionContents, bottleType: HTBottleType): Text = @@ -89,7 +97,7 @@ data object HTPotionHelper { @JvmStatic fun createFilled(getter: DataComponentGetter, bottleType: HTBottleType): ItemStackTemplate = - createFilled(getContents(getter), bottleType) + createFilled(getContentsOrEmpty(getter), bottleType) @JvmStatic fun createFilled(potion: Holder, bottleType: HTBottleType): ItemStackTemplate = @@ -102,31 +110,33 @@ data object HTPotionHelper { // Bucket @JvmStatic - fun createBuket(getter: DataComponentGetter): ItemStackTemplate = getContents(getter).let(::createBuket) + fun createBuket(getter: DataComponentGetter): ItemStackTemplate? = getContentsNotEmpty(getter)?.let(::createBuket) @Suppress("DEPRECATION") @JvmStatic - fun createBuket(potion: Holder): ItemStackTemplate = createBuket(PotionContents(potion)) + fun createBuket(potion: Holder): ItemStackTemplate = createBuket(PotionContents(potion))!! @JvmStatic - fun createBuket(contents: PotionContents): ItemStackTemplate = when { + fun createBuket(contents: PotionContents): ItemStackTemplate? = when { + isEmpty(contents) -> null contents.`is`(Potions.WATER) -> ItemStackTemplate(Items.WATER_BUCKET) - else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate(patch = createPotionPatch(contents))!! + else -> HTPotionFluidAccess.INSTANCE.fluidContent.bucketHolder.toTemplate(patch = createPotionPatch(contents)) } // FluidStack // @JvmStatic - fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = - createFluid(getContents(getter), amount) + fun createFluid(getter: DataComponentGetter, amount: Int = FluidType.BUCKET_VOLUME): FluidStack? = + getContentsNotEmpty(getter)?.let { createFluid(it, amount) } @Suppress("DEPRECATION") @JvmStatic fun createFluid(potion: Holder, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = - createFluid(PotionContents(potion), amount) + createFluid(PotionContents(potion), amount)!! @JvmStatic - fun createFluid(contents: PotionContents, amount: Int = FluidType.BUCKET_VOLUME): FluidStack = when { + fun createFluid(contents: PotionContents, amount: Int = FluidType.BUCKET_VOLUME): FluidStack? = when { + isEmpty(contents) -> null 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/ingredient/HTPotionFluidIngredient.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt index ea36ad3ec..432e94e7b 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTPotionFluidIngredient.kt @@ -51,7 +51,7 @@ data class HTPotionFluidIngredient(val potions: HolderSet) : FluidIngred override fun test(fluidStack: FluidStack): Boolean = when { fluidStack.`is`(Tags.Fluids.WATER) -> Potions.WATER in potions - else -> HTPotionHelper.getContents(fluidStack).potion().fold({ false }, potions::contains) + else -> HTPotionHelper.getContentsOrEmpty(fluidStack).potion().fold({ false }, potions::contains) } @Suppress("DEPRECATION") diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt index 2cff7c1f9..22a3bcfcc 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTFluidResult.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.recipe.result import com.mojang.serialization.Codec +import com.mojang.serialization.DataResult import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants import hiiragi283.lib.fluid.HTFlowingFluidHelper @@ -150,7 +151,14 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = - MapCodec.assumeMapUnsafe(PotionContents.CODEC).xmap(::PotionEntry, PotionEntry::contents) + MapCodec.assumeMapUnsafe( + PotionContents.CODEC.validate { contents: PotionContents -> + when (HTPotionHelper.isEmpty(contents)) { + true -> DataResult.error { "Could not create fluid result with empty potion contents" } + false -> DataResult.success(contents) + } + } + ).xmap(::PotionEntry, PotionEntry::contents) @JvmField val STREAM_CODEC: StreamCodec = @@ -162,7 +170,7 @@ data class HTFluidResult(val entry: Entry, val amount: Int) : HTRecipeResult = TYPE - override fun create(amount: Int): FluidStack = HTPotionHelper.createFluid(contents, amount) + override fun create(amount: Int): FluidStack = HTPotionHelper.createFluid(contents, amount) ?: FluidStack.EMPTY override fun getId(): Identifier? = HTPotionHelper.getPotionId(contents) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index e36e87622..a1c58489d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -8,6 +8,7 @@ import hiiragi283.lib.collection.buildSetMultiMap import hiiragi283.lib.collection.buildTable import hiiragi283.lib.collection.flatMapTable import hiiragi283.lib.collection.mutableEnumMapOf +import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.registry.HTBasicDeferredBlockAndItem import hiiragi283.lib.registry.HTDeferredBlockAndItem import hiiragi283.lib.registry.HTDeferredBlockAndItemRegister @@ -27,11 +28,13 @@ import hiiragi283.ragium.api.material.HTStorageBlockPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.api.util.HTStorageHelper +import hiiragi283.ragium.common.block.entity.HTFluidStorageBlock import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes -import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock +import hiiragi283.ragium.common.block.storage.HTPotionTankBlock import hiiragi283.ragium.common.block.storage.HTTankBlock import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import hiiragi283.ragium.common.item.block.HTCreativeTankBlockItem +import hiiragi283.ragium.common.item.block.HTPotionTankBlockItem import net.minecraft.core.component.DataComponentMap import net.minecraft.core.component.DataComponents import net.minecraft.resources.ResourceKey @@ -354,13 +357,14 @@ data object RagiumBlocks { // Bus // @JvmField - val FLUID_OUTPUT_BUS: HTBasicDeferredBlockAndItem = registerMachine( + val FLUID_OUTPUT_BUS: HTBasicDeferredBlockAndItem = registerMachine( RagiumBlockEntityTypes.FLUID_OUTPUT_BUS, - ::HTFluidBusBlock + ::HTFluidStorageBlock ) // Storage // + // Tank @JvmField val TANK: HTBasicDeferredBlockAndItem = registerMachine( RagiumBlockEntityTypes.TANK, @@ -368,7 +372,14 @@ data object RagiumBlocks { machine().noOcclusion() ) - // Void + @JvmField + val POTION_TANK: HTDeferredBlockAndItem = registerMachine( + RagiumBlockEntityTypes.POTION_TANK, + ::HTPotionTankBlock, + ::HTPotionTankBlockItem, + machine().noOcclusion() + ) + @JvmField val VOID_TANK: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( "void_tank", @@ -376,11 +387,6 @@ data object RagiumBlocks { ::HTVoidTankBlock ) - // Creative - @JvmField - val CREATIVE_BATTERY: HTBasicDeferredBlockAndItem = - registerMachine(RagiumBlockEntityTypes.CREATIVE_BATTERY, ::HTBasicEntityBlock) - @JvmField val CREATIVE_TANK: HTDeferredBlockAndItem = registerMachine( RagiumBlockEntityTypes.CREATIVE_TANK, @@ -389,6 +395,14 @@ data object RagiumBlocks { machine().noOcclusion() ) + @JvmField + val TANKS: List = listOf(TANK, POTION_TANK, VOID_TANK, CREATIVE_TANK) + + // Battery + @JvmField + val CREATIVE_BATTERY: HTBasicDeferredBlockAndItem = + registerMachine(RagiumBlockEntityTypes.CREATIVE_BATTERY, ::HTBasicEntityBlock) + // Decoration // @JvmField @@ -423,6 +437,17 @@ data object RagiumBlocks { }, TANK ) + event.registerItem( + HTFluidCapabilities.item, + { _, access -> + HTItemAccessFluidHandler.create( + access, + RagiumConfig.SERVER.tankCapacity.asInt, + filter = HTPotionHelper::hasAnyEffect + ) + }, + POTION_TANK + ) event.registerItem( HTFluidCapabilities.item, { _, _ -> HTVoidTankBlock.VOIDING_HANDLER }, diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTFluidStorageBlock.kt similarity index 54% rename from src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt rename to src/main/kotlin/hiiragi283/ragium/common/block/entity/HTFluidStorageBlock.kt index 3345e3024..41de89b72 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/bus/HTFluidBusBlock.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTFluidStorageBlock.kt @@ -1,7 +1,10 @@ -package hiiragi283.ragium.common.block.entity.bus +package hiiragi283.ragium.common.block.entity import hiiragi283.lib.registry.HTDeferredBlockEntityType +import hiiragi283.lib.transfer.fluid.HTFluidTank +import hiiragi283.lib.world.getTypedBlockEntity import hiiragi283.ragium.common.block.HTBasicEntityBlock +import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import net.minecraft.core.BlockPos import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionResult @@ -12,7 +15,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.phys.BlockHitResult import net.neoforged.neoforge.transfer.fluid.FluidUtil -open class HTFluidBusBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : +open class HTFluidStorageBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTBasicEntityBlock(type, properties) { override fun useItemOn( itemStack: ItemStack, @@ -26,11 +29,23 @@ open class HTFluidBusBlock(type: HTDeferredBlockEntityType<*>, properties: Prope val result: InteractionResult = super.useItemOn(itemStack, state, level, pos, player, hand, hitResult) if (itemStack.isEmpty) return result if (!player.isShiftKeyDown) { - val moved: Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) - if (moved) { + val tank: HTFluidTank = + level.getTypedBlockEntity(pos)?.tank ?: return InteractionResult.FAIL + if (interactTank(itemStack, state, level, pos, player, hand, hitResult, tank)) { return InteractionResult.SUCCESS } } return result } + + protected open fun interactTank( + itemStack: ItemStack, + state: BlockState, + level: Level, + pos: BlockPos, + player: Player, + hand: InteractionHand, + hitResult: BlockHitResult, + tank: HTFluidTank + ): Boolean = FluidUtil.interactWithFluidHandler(player, hand, level, pos, hitResult.direction, null) } 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 6d3a3079a..60a46c28d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/RagiumBlockEntityTypes.kt @@ -31,6 +31,7 @@ import hiiragi283.ragium.common.block.entity.machine.HTSmelterBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeBatteryBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTCreativeTankBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTFluidOutputBusBlockEntity +import hiiragi283.ragium.common.block.entity.storage.HTPotionTankBlockEntity import hiiragi283.ragium.common.block.entity.storage.HTTankBlockEntity import hiiragi283.ragium.common.block.storage.HTVoidTankBlock import net.minecraft.core.Direction @@ -139,6 +140,10 @@ data object RagiumBlockEntityTypes { val TANK: HTDeferredBlockEntityType = registerTick(HTConstants.TANK, ::HTTankBlockEntity) + @JvmField + val POTION_TANK: HTDeferredBlockEntityType = + registerTick("potion_tank", ::HTPotionTankBlockEntity) + @JvmField val CREATIVE_BATTERY: HTDeferredBlockEntityType = registerTick("creative_battery", ::HTCreativeBatteryBlockEntity) @@ -202,6 +207,7 @@ data object RagiumBlockEntityTypes { registerBlockEntity(FLUID_OUTPUT_BUS.get()) // Storage registerBlockEntity(TANK.get()) + registerBlockEntity(POTION_TANK.get()) event.registerBlock( HTFluidCapabilities.block, diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt new file mode 100644 index 000000000..df1f17a37 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt @@ -0,0 +1,48 @@ +package hiiragi283.ragium.common.block.entity.storage + +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.transfer.fluid.HTBasicFluidTank +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes +import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +import hiiragi283.ragium.common.transfer.holder.HTSlotInfo +import net.minecraft.core.BlockPos +import net.minecraft.core.component.DataComponentGetter +import net.minecraft.core.component.DataComponentMap +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.neoforge.fluids.SimpleFluidContent + +class HTPotionTankBlockEntity(pos: BlockPos, state: BlockState) : + HTBaseTankBlockEntity(RagiumBlockEntityTypes.POTION_TANK.get(), pos, state) { + override lateinit var tank: HTBasicFluidTank + private set + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + tank = builder.addSlot( + HTSlotInfo.INPUT, + HTVariableFluidTank.create( + RagiumConfig.SERVER.tankCapacity, + listener, + filter = HTPotionHelper::hasAnyEffect + ) + ) + } + + // Sync // + + override fun applyImplicitComponents(components: DataComponentGetter) { + super.applyImplicitComponents(components) + components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + } + + override fun collectImplicitComponents(components: DataComponentMap.Builder) { + super.collectImplicitComponents(components) + val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) + if (!content.isEmpty) { + components.set(RagiumDataComponents.FLUID, content) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTPotionTankBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTPotionTankBlock.kt new file mode 100644 index 000000000..f9f8bd35c --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTPotionTankBlock.kt @@ -0,0 +1,70 @@ +package hiiragi283.ragium.common.block.storage + +import hiiragi283.lib.item.HTItemDropHelper +import hiiragi283.lib.item.alchemy.HTBottleType +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.lib.registry.HTDeferredBlockEntityType +import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.transfer.HTTransferAccess +import hiiragi283.lib.transfer.fluid.HTFluidTank +import hiiragi283.lib.transfer.fluid.toResourcePair +import hiiragi283.lib.transfer.useTransaction +import net.minecraft.core.BlockPos +import net.minecraft.core.component.DataComponents +import net.minecraft.world.InteractionHand +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.phys.BlockHitResult +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.transfer.fluid.FluidResource +import net.neoforged.neoforge.transfer.transaction.Transaction + +class HTPotionTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : + HTTankBlock(type, properties) { + override fun interactTank( + itemStack: ItemStack, + state: BlockState, + level: Level, + pos: BlockPos, + player: Player, + hand: InteractionHand, + hitResult: BlockHitResult, + tank: HTFluidTank + ): Boolean = handlePotionBottle(itemStack, player, tank) || + super.interactTank(itemStack, state, level, pos, player, hand, hitResult, tank) + + private fun handlePotionBottle(itemStack: ItemStack, player: Player, tank: HTFluidTank): Boolean { + useTransaction { transaction: Transaction -> + // ポーション瓶 -> 液体ポーション + 瓶 + val emptyBottle: HTSimpleDeferredItem? = HTBottleType.getFromFilled(itemStack)?.emptyItem + if (emptyBottle != null) { + val potionFluid: FluidStack? = HTPotionHelper.createFluid(itemStack, HTPotionHelper.BOTTLE_AMOUNT) + if (potionFluid != null) { + val (resource: FluidResource, amount: Int) = potionFluid.toResourcePair() + if (tank.insert(resource, amount, transaction, HTTransferAccess.EXTERNAL) == amount) { + val newStack: ItemStack = itemStack.transmuteCopy(emptyBottle, 1) + newStack.remove(DataComponents.POTION_CONTENTS) + HTItemDropHelper.giveStackTo(player, newStack) + itemStack.shrink(1) + transaction.commit() + return true + } + } + } + // 液体ポーション + 瓶 -> ポーション瓶 + val resourceIn: FluidResource = tank.resource + if (resourceIn.isEmpty) return false + val filledBottle: HTBottleType = HTBottleType.getFromEmpty(itemStack) ?: return false + val bottleAmount: Int = HTPotionHelper.BOTTLE_AMOUNT + if (tank.extract(resourceIn, bottleAmount, transaction, HTTransferAccess.EXTERNAL) == bottleAmount) { + HTItemDropHelper.giveStackTo(player, HTPotionHelper.createFilled(resourceIn, filledBottle)) + itemStack.shrink(1) + transaction.commit() + return true + } + return false + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt index 545c81197..d57b30768 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/storage/HTTankBlock.kt @@ -1,14 +1,15 @@ package hiiragi283.ragium.common.block.storage import hiiragi283.lib.registry.HTDeferredBlockEntityType -import hiiragi283.ragium.common.block.entity.bus.HTFluidBusBlock +import hiiragi283.ragium.common.block.entity.HTFluidStorageBlock import net.minecraft.core.BlockPos import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape -class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : HTFluidBusBlock(type, properties) { +open class HTTankBlock(type: HTDeferredBlockEntityType<*>, properties: Properties) : + HTFluidStorageBlock(type, properties) { companion object { @JvmField val SHAPE: VoxelShape = box(2.0, 0.0, 2.0, 14.0, 16.0, 14.0) diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt index fe89e331c..cc2b211b2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTPotionFluidType.kt @@ -10,5 +10,6 @@ import net.neoforged.neoforge.fluids.FluidStack class HTPotionFluidType(properties: Properties) : HTFluidType(properties) { override fun getDescription(stack: FluidStack): Text = HTPotionHelper.getPotionName(stack, HTBottleType.DEFAULT) - override fun getBucket(stack: FluidStack): ItemStack = HTPotionHelper.createBuket(stack).create() + override fun getBucket(stack: FluidStack): ItemStack = + HTPotionHelper.createBuket(stack)?.create() ?: super.getBucket(stack) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt index 593d12eba..af469aab1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBucketItem.kt @@ -22,6 +22,6 @@ class HTPotionBucketItem(properties: Properties) : HTPotionBasedItem(properties) class BucketHandler(itemAccess: ItemAccess) : HTCustomBucketItemHandler(itemAccess) { override fun getResourceFrom(accessResource: ItemResource, index: Int): FluidResource = - HTPotionHelper.createFluid(accessResource).let(FluidResource::of) + HTPotionHelper.createFluid(accessResource)?.let(FluidResource::of) ?: FluidResource.EMPTY } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt index 8d5ca061f..48a0dace9 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt @@ -26,13 +26,13 @@ class HTCreativeTankBlockItem(block: Block, properties: Properties) : parameters.holders .lookupOrThrow(Registries.FLUID) .asHolderSequence() - .mapNotNull { fluid -> - if (!HTFlowingFluidHelper.isSource(fluid)) return@mapNotNull null + .forEach { fluid -> + if (!HTFlowingFluidHelper.isSource(fluid)) return@forEach val content: SimpleFluidContent = FluidStack(fluid).let(SimpleFluidContent::copyOf) - if (content.isEmpty) return@mapNotNull null - ItemStack(baseItem, 1, buildDataPatch { set(RagiumDataComponents.FLUID, content) }) - }.forEach(output::accept) + if (content.isEmpty) return@forEach + output.accept( + ItemStack(baseItem, 1, buildDataPatch { set(RagiumDataComponents.FLUID, content) }) + ) + } } - - override fun shouldAddDefault(): Boolean = false } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/block/HTPotionTankBlockItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTPotionTankBlockItem.kt new file mode 100644 index 000000000..fa400aeaf --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTPotionTankBlockItem.kt @@ -0,0 +1,35 @@ +package hiiragi283.ragium.common.item.block + +import hiiragi283.lib.item.HTSubCreativeTabContents +import hiiragi283.lib.item.alchemy.HTPotionHelper +import hiiragi283.ragium.api.RagiumConfig +import hiiragi283.ragium.api.util.HTStorageHelper +import net.minecraft.core.Holder +import net.minecraft.core.registries.Registries +import net.minecraft.world.item.BlockItem +import net.minecraft.world.item.CreativeModeTab +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.alchemy.Potion +import net.minecraft.world.item.alchemy.Potions +import net.minecraft.world.level.block.Block + +class HTPotionTankBlockItem(block: Block, properties: Properties) : + BlockItem(block, properties), + HTSubCreativeTabContents { + override fun addItems( + baseItem: Holder, + parameters: CreativeModeTab.ItemDisplayParameters, + output: CreativeModeTab.Output + ) { + for (potion: Holder in parameters.filteredElements(Registries.POTION)) { + if (potion == Potions.WATER) continue + val stack = ItemStack(baseItem) + HTStorageHelper.updateFluid( + stack, + HTPotionHelper.createFluid(potion, amount = RagiumConfig.SERVER.tankCapacity.asInt) + ) + output.accept(stack) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt index 037b4bbdc..193a3c42f 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt @@ -10,6 +10,7 @@ import hiiragi283.lib.recipe.result.HTItemAndFluidResult import net.minecraft.world.item.ItemInstance import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput +import net.neoforged.neoforge.fluids.FluidStack @JvmRecord data class RTPotionBottleDrainingRecipe(val bottleType: HTBottleType, override val progressData: HTProgressData) : @@ -27,7 +28,7 @@ data class RTPotionBottleDrainingRecipe(val bottleType: HTBottleType, override v override fun apply(input: ItemInstance): HTItemAndFluidResult = HTItemAndFluidResult( bottleType.emptyItem.toStack(), - HTPotionHelper.createFluid(input, HTPotionHelper.BOTTLE_AMOUNT) + HTPotionHelper.createFluid(input, HTPotionHelper.BOTTLE_AMOUNT) ?: FluidStack.EMPTY ) override fun getMatchingStack(input: ItemInstance): ItemInstance = when { diff --git a/src/main/resources/assets/ragium/textures/block/potion_tank_side.png b/src/main/resources/assets/ragium/textures/block/potion_tank_side.png new file mode 100644 index 0000000000000000000000000000000000000000..48d01f14619930990e8343f4d502369af017153a GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`D?D8sLn;{8Ouoq3Vj$o$`SpXo z-9qcwUw=66_vWPh>kaJQ0$W>7Fbk)NCbG7=Pn&x(<@@3A8~bX|?h22WQ%mvv4FO#owiV{`xj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/potion_tank_top.png b/src/main/resources/assets/ragium/textures/block/potion_tank_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8107350babd25479f3a671e4a497a7b602c2e5d8 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`D?MEtLn;{GOghWkY{1j{I4@x3 z+yzT z=k6`g`?mj1lPR;LyHG0kI^ATp)aA_#dko#SsGj2L)j7ABQB_wlb(O=Et@=7`3vV(U q75oZx>;M0c`o8%A8Eha&Gczy+Bq&BYe_I0-VeoYIb6Mw<&;$SpZDHyF literal 0 HcmV?d00001 From 3c6672f2f7dabedf48d45b10880aea24a87368aa Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 27 Sep 2026 23:53:14 +0900 Subject: [PATCH 16/38] =?UTF-8?q?feat!:=20=E6=B0=B4=E9=85=B8=E5=8C=96?= =?UTF-8?q?=E3=82=AB=E3=83=AB=E3=82=B7=E3=82=A6=E3=83=A0=E6=B0=B4=E6=BA=B6?= =?UTF-8?q?=E6=B6=B2=E3=81=AE=E7=94=A8=E9=80=94=E3=82=92=E6=80=9D=E3=81=84?= =?UTF-8?q?=E3=81=A4=E3=81=8B=E3=81=AA=E3=81=84=E3=81=AE=E3=81=A7=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 4 -- .../data/lang/RagiumEnglishLangProvider.kt | 1 - .../data/lang/RagiumJapaneseLangProvider.kt | 1 - .../ragium/data/model/RagiumModelProvider.kt | 10 +---- .../recipe/RagiumChemicalRecipeProvider.kt | 2 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 32 ------------- .../data/recipe/RagiumHeatRecipeProvider.kt | 16 +++++++ .../calcium_hydroxide_solution.json | 7 --- .../calcium_hydroxide_solution_bucket.json | 12 ----- .../resources/assets/ragium/lang/en_us.json | 4 -- .../resources/assets/ragium/lang/ja_jp.json | 4 -- .../block/calcium_hydroxide_solution.json | 5 --- .../fluid/calcium_hydroxide_solution.json | 6 --- .../resources/data/c/tags/item/buckets.json | 1 - .../buckets/calcium_hydroxide_solution.json | 5 --- .../ragium/recipe/melting/carbon_dioxide.json | 12 +++++ .../{mixing => melting}/sulfur_dioxide.json | 8 +--- .../{mixing => melting}/sulfur_trioxide.json | 8 +--- .../mixing/calcium_hydroxide_solution.json | 16 ------- .../calcium_carbonate_dust_from_solution.json | 20 --------- .../recipe/washing/copper_dust_from_raw.json | 2 +- .../lib/data/model/HTModelProvider.kt | 42 ++++++++---------- .../lib/item/alchemy/HTBottleType.kt | 6 +++ .../kotlin/hiiragi283/lib/util/HTDelegates.kt | 25 ----------- .../api/data/chemical/HTMixtureChemical.kt | 36 +++++++++++++++ .../ragium/api/data/element/HTElement.kt | 1 + .../kotlin/hiiragi283/ragium/common/Ragium.kt | 2 + .../ragium/common/fluid/RagiumFluids.kt | 7 +-- .../ragium/common/item/RagiumItems.kt | 1 + .../textures/item/artificial_artifact.png | Bin 363 -> 0 bytes .../ragium/textures/item/ragi_crystal.png | Bin 330 -> 0 bytes .../textures/item/ragi_crystal_dust.png | Bin 281 -> 0 bytes 32 files changed, 101 insertions(+), 195 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json delete mode 100644 src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json delete mode 100644 src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json delete mode 100644 src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json delete mode 100644 src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json create mode 100644 src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json rename src/generated/resources/data/ragium/recipe/{mixing => melting}/sulfur_dioxide.json (53%) rename src/generated/resources/data/ragium/recipe/{mixing => melting}/sulfur_trioxide.json (54%) delete mode 100644 src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json delete mode 100644 src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTMixtureChemical.kt delete mode 100644 src/main/resources/assets/ragium/textures/item/artificial_artifact.png delete mode 100644 src/main/resources/assets/ragium/textures/item/ragi_crystal.png delete mode 100644 src/main/resources/assets/ragium/textures/item/ragi_crystal_dust.png diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 033e843a8..b2cb40b64 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -227,10 +227,6 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0xccff99)) } - register.register(RagiumFluids.CAOH_SOLUTION) { - dull() - colorTint(Color(0x333399)) - } } override fun registerScreens(event: RegisterMenuScreensEvent) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index d1c36544d..1942cc331 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -122,7 +122,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "Hydrogen Chloride") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "Hydrochloric Acid") addFluid(RagiumFluids.BLEACH, "Bleach") - addFluid(RagiumFluids.CAOH_SOLUTION, "Calcium Hydroxide Solution") // Item add(RagiumItems.BAMBOO_CHARCOAL, "Bamboo Charcoal") add(RagiumItems.PARTICLE_BOARD, "Particle Board") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index b5356d7e0..462997b08 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -118,7 +118,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.HYDROGEN_CHLORIDE, "塩化水素") addFluid(RagiumFluids.HYDROCHLORIC_ACID, "塩酸") addFluid(RagiumFluids.BLEACH, "漂白剤") - addFluid(RagiumFluids.CAOH_SOLUTION, "水酸化カルシウム水溶液") // Item add(RagiumItems.BAMBOO_CHARCOAL, "竹炭") add(RagiumItems.PARTICLE_BOARD, "パーティクルボード") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index c259e0ebe..3fcfe8ea2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -3,7 +3,6 @@ package hiiragi283.ragium.data.model import hiiragi283.lib.HTConstants import hiiragi283.lib.data.model.HTModelProvider import hiiragi283.lib.data.model.HTModelTemplates -import hiiragi283.lib.data.model.createBlock import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.HTSimpleDeferredItem @@ -115,14 +114,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } // Decoration for ((machineType: HTMachineType, block: HTSimpleDeferredBlockAndItem) in RagiumBlocks.MACHINE_CASINGS) { - generators.createSimple( - block.getOrThrow(), - ModelTemplates.CUBE_TOP.createBlock( - block, - textureMapping(machineType), - generators.modelOutput - ) - ) + generators.createSimple(block.getOrThrow(), ModelTemplates.CUBE_TOP, textureMapping(machineType)) } // Bus generators.createTrivialBlock(RagiumBlocks.FLUID_OUTPUT_BUS.getOrThrow(), TexturedModel.CUBE_TOP_BOTTOM) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index aefa190ea..093cf3713 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -112,7 +112,7 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) - count = 3 + count = 2 } recipeId suffix "_from_raw" }.save(exporter) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 9407bf533..0cb706ecd 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -355,26 +355,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } fluidResult { +RagiumFluids.CARBON_DIOXIDE } }.save(exporter) - // CaO + H2O -> Ca(OH)2 (aq) - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } - fluidIngredient { +waterSet() } - result { +RagiumFluids.CAOH_SOLUTION } - }.save(exporter) - // Ca(OH)2 (aq) + CO2 -> CaCO3 + H2O - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.CAOH_SOLUTION) } - secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } - fluidResult { - +Fluids.WATER - amount *= 2 - } - val dust: HTSimpleDeferredItem = - RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) - itemResult { +dust } - recipeId replace dust.idOrThrow - recipeId suffix "_from_solution" - }.save(exporter) // Wood Pulp + NaOH aq -> Paper Pulp RagiumRecipeBuilders.bathing { @@ -475,12 +455,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } private fun sulfuricAcid() { - // S + O2 -> SO2 - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SULFUR) } - fluidIngredient { +holderSet(RagiumFluids.OXYGEN) } - result { +RagiumFluids.SULFUR_DIOXIDE } - }.save(exporter) // SO2 + 1/2 O2 -> SO3 RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.SULFUR_DIOXIDE) } @@ -490,12 +464,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } }.save(exporter) - // Blaze Powder + O2 -> SO3 - RagiumRecipeBuilders.mixing { - itemIngredient { items { +Items.BLAZE_POWDER } } - fluidIngredient { +holderSet(RagiumFluids.OXYGEN) } - result { +RagiumFluids.SULFUR_TRIOXIDE } - }.save(exporter) // SO3 + H2O -> H2SO4 RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.SULFUR_TRIOXIDE) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index ebde48cd3..66fa4a4ef 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -295,6 +295,22 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture amount = 90 } }.save(exporter) + + // C -> CO2 + RagiumRecipeBuilders.melting { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CARBON) } + result { +RagiumFluids.CARBON_DIOXIDE } + }.save(exporter) + // S -> SO2 + RagiumRecipeBuilders.melting { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SULFUR) } + result { +RagiumFluids.SULFUR_DIOXIDE } + }.save(exporter) + // Blaze Powder -> SO3 + RagiumRecipeBuilders.melting { + ingredient { items { +Items.BLAZE_POWDER } } + result { +RagiumFluids.SULFUR_TRIOXIDE } + }.save(exporter) } override fun getName(): String = "Heat Recipes" diff --git a/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json deleted file mode 100644 index c1d3e117a..000000000 --- a/src/generated/resources/assets/ragium/blockstates/calcium_hydroxide_solution.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "ragium:block/calcium_hydroxide_solution" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json b/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json deleted file mode 100644 index 61a3cb335..000000000 --- a/src/generated/resources/assets/ragium/items/calcium_hydroxide_solution_bucket.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "model": { - "type": "neoforge:fluid_container", - "apply_fluid_luminosity": false, - "fluid": "ragium:calcium_hydroxide_solution", - "textures": { - "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid", - "particle": "minecraft:item/bucket" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index ea6d6498b..c0b7e3407 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -31,7 +31,6 @@ "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", - "block.ragium.calcium_hydroxide_solution": "Calcium Hydroxide Solution", "block.ragium.carbon_dioxide": "Carbon Dioxide", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", @@ -211,7 +210,6 @@ "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", "item.ragium.calcium_carbonate_dust": "Calcium Carbonate Dust", - "item.ragium.calcium_hydroxide_solution_bucket": "Calcium Hydroxide Solution Bucket", "item.ragium.calcium_oxide_dust": "Calcium Oxide Dust", "item.ragium.carbon_dioxide_bucket": "Carbon Dioxide Bucket", "item.ragium.carbon_dust": "Carbon Dust", @@ -400,7 +398,6 @@ "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", "tag.fluid.c.bleach": "Bleach", - "tag.fluid.c.calcium_hydroxide_solution": "Calcium Hydroxide Solution", "tag.fluid.c.carbon_dioxide": "Carbon Dioxide", "tag.fluid.c.chlorine": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", @@ -450,7 +447,6 @@ "tag.item.c.buckets.anti_rust_oil": "Anti-rust Oil Bucket", "tag.item.c.buckets.aromatic_compound": "Aromatic Compound Bucket", "tag.item.c.buckets.bleach": "Bleach Bucket", - "tag.item.c.buckets.calcium_hydroxide_solution": "Calcium Hydroxide Solution Bucket", "tag.item.c.buckets.carbon_dioxide": "Carbon Dioxide Bucket", "tag.item.c.buckets.chlorine": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index d1b7b03b8..9260bf604 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -31,7 +31,6 @@ "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", - "block.ragium.calcium_hydroxide_solution": "水酸化カルシウム水溶液", "block.ragium.carbon_dioxide": "二酸化炭素", "block.ragium.charcoal_block": "木炭ブロック", "block.ragium.chemical_bath": "化学浴槽", @@ -211,7 +210,6 @@ "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", "item.ragium.calcium_carbonate_dust": "炭酸カルシウムの粉", - "item.ragium.calcium_hydroxide_solution_bucket": "水酸化カルシウム水溶液入りバケツ", "item.ragium.calcium_oxide_dust": "酸化カルシウムの粉", "item.ragium.carbon_dioxide_bucket": "二酸化炭素入りバケツ", "item.ragium.carbon_dust": "炭素の粉", @@ -400,7 +398,6 @@ "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", "tag.fluid.c.bleach": "漂白剤", - "tag.fluid.c.calcium_hydroxide_solution": "水酸化カルシウム水溶液", "tag.fluid.c.carbon_dioxide": "二酸化炭素", "tag.fluid.c.chlorine": "塩素", "tag.fluid.c.coal_tar": "石炭タール", @@ -450,7 +447,6 @@ "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", "tag.item.c.buckets.bleach": "漂白剤入りバケツ", - "tag.item.c.buckets.calcium_hydroxide_solution": "水酸化カルシウム水溶液入りバケツ", "tag.item.c.buckets.carbon_dioxide": "二酸化炭素入りバケツ", "tag.item.c.buckets.chlorine": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json b/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json deleted file mode 100644 index 67032282f..000000000 --- a/src/generated/resources/assets/ragium/models/block/calcium_hydroxide_solution.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "minecraft:block/water_still" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json deleted file mode 100644 index f40a727e7..000000000 --- a/src/generated/resources/data/c/tags/fluid/calcium_hydroxide_solution.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "ragium:calcium_hydroxide_solution", - "ragium:flowing_calcium_hydroxide_solution" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index d2f068b5f..99dce57f0 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -4,7 +4,6 @@ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", "#c:buckets/bleach", - "#c:buckets/calcium_hydroxide_solution", "#c:buckets/carbon_dioxide", "#c:buckets/chlorine", "#c:buckets/coal_tar", diff --git a/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json b/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json deleted file mode 100644 index 021779374..000000000 --- a/src/generated/resources/data/c/tags/item/buckets/calcium_hydroxide_solution.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:calcium_hydroxide_solution_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json b/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json new file mode 100644 index 000000000..19d3b1636 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:melting", + "ingredient": { + "count": 1, + "items": "#c:dusts/carbon" + }, + "result": { + "amount": 1000, + "id": "ragium:carbon_dioxide" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/sulfur_dioxide.json b/src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json similarity index 53% rename from src/generated/resources/data/ragium/recipe/mixing/sulfur_dioxide.json rename to src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json index 9acbf8dfc..e6822813e 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/sulfur_dioxide.json +++ b/src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json @@ -1,10 +1,6 @@ { - "type": "ragium:mixing", - "fluid_ingredient": { - "amount": 1000, - "fluids": "#c:oxygen" - }, - "item_ingredient": { + "type": "ragium:melting", + "ingredient": { "count": 1, "items": "#c:dusts/sulfur" }, diff --git a/src/generated/resources/data/ragium/recipe/mixing/sulfur_trioxide.json b/src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json similarity index 54% rename from src/generated/resources/data/ragium/recipe/mixing/sulfur_trioxide.json rename to src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json index a38c8efa4..bc05da52f 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/sulfur_trioxide.json +++ b/src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json @@ -1,10 +1,6 @@ { - "type": "ragium:mixing", - "fluid_ingredient": { - "amount": 1000, - "fluids": "#c:oxygen" - }, - "item_ingredient": { + "type": "ragium:melting", + "ingredient": { "count": 1, "items": "minecraft:blaze_powder" }, diff --git a/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json b/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json deleted file mode 100644 index f025a96b0..000000000 --- a/src/generated/resources/data/ragium/recipe/mixing/calcium_hydroxide_solution.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:mixing", - "fluid_ingredient": { - "amount": 1000, - "fluids": "#c:water" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/calcium_oxide" - }, - "result": { - "amount": 1000, - "id": "ragium:calcium_hydroxide_solution" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json deleted file mode 100644 index fdb83b2ac..000000000 --- a/src/generated/resources/data/ragium/recipe/reacting/calcium_carbonate_dust_from_solution.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "ragium:reacting", - "fluid_result": { - "amount": 2000, - "id": "minecraft:water" - }, - "item_result": { - "count": 1, - "id": "ragium:calcium_carbonate_dust" - }, - "primary_ingredient": { - "amount": 1000, - "fluids": "#c:calcium_hydroxide_solution" - }, - "secondary_ingredient": { - "amount": 1000, - "fluids": "#c:carbon_dioxide" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json index edbb155e2..38ff1558e 100644 --- a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json +++ b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json @@ -9,7 +9,7 @@ "items": "#c:raw_materials/copper" }, "result": { - "count": 3, + "count": 2, "id": "ragium:copper_dust" }, "time": 200 diff --git a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt index 5a24eb7aa..e4b2a0e90 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt @@ -36,6 +36,17 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide // Block // + /** + * ブロックJSONを生成します。 + * @param block ブロックのインスタンス + * @param template 生成するモデルのテンプレート + * @param mapping テクスチャのマッピング + * @since 26.1.8 + */ + fun BlockModelGenerators.createSimple(block: Block, template: ModelTemplate, mapping: TextureMapping) { + this.createSimple(block, template.create(block, mapping, this.modelOutput)) + } + /** * ブロックJSONを生成します。 * @param block ブロックのインスタンス @@ -54,18 +65,6 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, variant)) } - /** - * ブロックJSONを生成します。 - * @param block ブロックの提供元 - * @param modelId 使用するモデルのID - */ - fun BlockModelGenerators.createAltModel( - block: HTValueWithId, - modelId: Identifier = block.idOrThrow.blockId - ) { - this.createSimple(block.getOrThrow(), modelId) - } - /** * ハーフブロックのブロックJSONを生成します。 */ @@ -122,10 +121,10 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide bottom: Material ) { val stairs: StairBlock = block.getOrThrow() - val mapping: TextureMapping = TextureMapping().put( - TextureSlot.TOP, - top - ).put(TextureSlot.BOTTOM, bottom).put(TextureSlot.SIDE, side) + val mapping: TextureMapping = TextureMapping() + .put(TextureSlot.TOP, top) + .put(TextureSlot.BOTTOM, bottom) + .put(TextureSlot.SIDE, side) val modelId: Identifier = ModelTemplates.STAIRS_STRAIGHT.createBlock(block, mapping, modelOutput) blockStateOutput.accept( @@ -144,13 +143,10 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @param fluidBlock 液体ブロックの提供元 */ fun BlockModelGenerators.createFluid(fluidBlock: HTValueWithId) { - this.createAltModel( - fluidBlock, - HTModelTemplates.FLUID_BLOCK.createBlock( - fluidBlock, - TextureMapping.particle(Material(vanillaId(HTConstants.BLOCK, "water_still"))), - this.modelOutput - ) + this.createSimple( + fluidBlock.getOrThrow(), + HTModelTemplates.FLUID_BLOCK, + TextureMapping.particle(Material(vanillaId(HTConstants.BLOCK, "water_still"))) ) } diff --git a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt index aaed3601b..5887ec48e 100644 --- a/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt +++ b/src/lib/kotlin/hiiragi283/lib/item/alchemy/HTBottleType.kt @@ -35,10 +35,16 @@ enum class HTBottleType(val filledItem: HTSimpleDeferredItem) : StringRepresenta @JvmField val STREAM_CODEC: StreamCodec = HTStreamCodecs.enum() + /** + * @since 26.1.8 + */ @JvmStatic fun getFromFilled(instance: TypedInstance): HTBottleType? = HTBottleType.entries.firstOrNull { it.filledItem.isOf(instance) } + /** + * @since 26.1.8 + */ @JvmStatic fun getFromEmpty(instance: TypedInstance): HTBottleType? = HTBottleType.entries.firstOrNull { it.emptyItem.isOf(instance) } diff --git a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt index e545fbdb0..cdf75dd9e 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/HTDelegates.kt @@ -63,29 +63,4 @@ data object HTDelegates { setter.accept(value) } } - - /** - * @since 26.1.8 - */ - fun memoizeNotNull(supplier: () -> T?): ReadWriteProperty = MemoizeNotNull(supplier) - - private class MemoizeNotNull(private val supplier: () -> T?) : ReadWriteProperty { - private var cachedValue: T? = null - - override fun getValue(thisRef: Any?, property: KProperty<*>): T? { - if (cachedValue != null) { - return cachedValue - } else { - val value: T? = supplier() - if (value != null) { - cachedValue = value - } - return value - } - } - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { - cachedValue = value - } - } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTMixtureChemical.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTMixtureChemical.kt new file mode 100644 index 000000000..a413c80b7 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/HTMixtureChemical.kt @@ -0,0 +1,36 @@ +package hiiragi283.ragium.api.data.chemical + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.serialization.codec.compactNelFieldOf +import hiiragi283.lib.serialization.network.nelOf +import hiiragi283.ragium.api.data.element.HTElement +import net.minecraft.core.Holder +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec + +/** + * 混合物を表す[HTChemical]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTMixtureChemical(val elements: Nel>) : HTChemical { + companion object { + @JvmField + val CODEC: MapCodec = HTElement.HOLDER_CODEC + .compactNelFieldOf("element", "elements") + .xmap(::HTMixtureChemical, HTMixtureChemical::elements) + + @JvmField + val STREAM_CODEC: StreamCodec = + HTElement.HOLDER_STREAM_CODEC.nelOf().map(::HTMixtureChemical, HTMixtureChemical::elements) + + @JvmField + val TYPE: HTChemical.Type = HTChemical.Type(CODEC, STREAM_CODEC) + } + + override fun type(): HTChemical.Type = TYPE + + override fun getChemicalFormula(): String = elements.joinToString(prefix = "(", postfix = ")") +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt index 6b47b963e..78c47683f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/element/HTElement.kt @@ -13,6 +13,7 @@ import net.minecraft.util.ExtraCodecs /** * 元素を表すクラスです。 + * @param symbol 元素記号 * @author Hiiragi Tsubasa * @since 26.1.8 */ diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index a37d0c6c2..e8943e353 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -18,6 +18,7 @@ import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.RagiumRegistries import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.chemical.HTCompoundChemical +import hiiragi283.ragium.api.data.chemical.HTMixtureChemical import hiiragi283.ragium.api.data.chemical.HTSimpleChemical import hiiragi283.ragium.api.recipe.RagiumRecipeSerializers import hiiragi283.ragium.api.recipe.RagiumRecipeTypes @@ -120,6 +121,7 @@ data object Ragium : HTCommonMod() { event.register(RagiumRegistries.Keys.CHEMICAL_TYPE) { helper -> helper.register(RagiumAPI.id("simple"), HTSimpleChemical.TYPE) helper.register(RagiumAPI.id("compound"), HTCompoundChemical.TYPE) + helper.register(RagiumAPI.id("mixture"), HTMixtureChemical.TYPE) } event.register(RagiumRegistries.Keys.FLUID_RESULT_TYPE) { helper -> helper.register(RagiumAPI.id("simple"), HTFluidResult.SimpleEntry.TYPE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index ffebf83ff..979c4cb76 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -27,6 +27,7 @@ data object RagiumFluids { @JvmStatic fun register(eventBus: IEventBus) { + REGISTER.addAlias("calcium_hydroxide_solution", "sodium_hydroxide_solution") REGISTER.addAlias(RagiumAPI.id("molten_blaze"), vanillaId("lava")) REGISTER.addAlias("creosote", "coal_tar") REGISTER.addAlias("chloride", "chlorine") @@ -251,10 +252,4 @@ data object RagiumFluids { @JvmField val BLEACH: HTFluidContent.Virtual = REGISTER.registerVirtual("bleach") { properties = liquid() } - - // Ca - @JvmField - val CAOH_SOLUTION: HTFluidContent.Flowing = REGISTER.registerFlowing("calcium_hydroxide_solution") { - properties = liquid() - } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index fcf7e942c..16f1bceb3 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -42,6 +42,7 @@ data object RagiumItems { REGISTER.addAlias("steel_ingot", "sooty_iron_ingot") REGISTER.addAlias("steel_nugget", "sooty_iron_nugget") REGISTER.addAlias("coal_coke_dust", "carbon_dust") + REGISTER.addAlias("circuit_board", "cfrp_plate") eventBus.addListener(::registerCapabilities) eventBus.addListener(::modifyDefaultComponents) diff --git a/src/main/resources/assets/ragium/textures/item/artificial_artifact.png b/src/main/resources/assets/ragium/textures/item/artificial_artifact.png deleted file mode 100644 index 20f9d1ea9101681e321281c70dce11a40e93cb94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hIoUP)u?>~d8+ZVvQlXT101u&5sWiHcQX;Ec8DR;Tu$`6f@Sj}A z(3s?#JLlZa|7#=bb?OKrL|HxqXng8epGT^frtk*d0|9=oJpZWhk(15QDw*PGz z`2VBpLva?!me&6d7#K{_85mrQA!Y3Obp{WHOALn@KEm}e;dDwz8pIHg z0Z_xZj5QgEb2`Wm$X)poG_qH)y8z^5kX0~m0NIBaK4P_;1w-`AOonfa zb_`tQF$gKBfrqgef@%OrVZ|&4kY9IpPDL@hnn4cCZ)JFdB90OZAio_l4rkbT_5=fv zjiL}_J4lRREP$d4S4g9H3#tesd4gPF%OJqeYV3|k2SC=h&LtRW0HgqG`o@;xK#GwQ c5CgRU04g1=0*M1c<-67J|Kk%@DW&Fh4VZG{Fq0n8g6%gTmok z=Mo04-Te&chM;-@g1IzzsOe@R0%JR0gQCVgCPi_Bz;R zkRA{lJs=s81werWav~_yVH!YeWQ`z;JQyy)^)aHG2n%VDLCA6-jUYa Date: Mon, 28 Sep 2026 20:09:04 +0900 Subject: [PATCH 17/38] =?UTF-8?q?feat!:=20Carbon=20Dioxide=20=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4=20refactor!:=20=E3=82=A2=E3=82=A4=E3=83=86?= =?UTF-8?q?=E3=83=A0=E5=90=8D=E3=82=92=E4=B8=80=E9=83=A8=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 4 - .../data/lang/RagiumEnglishLangProvider.kt | 5 +- .../data/lang/RagiumJapaneseLangProvider.kt | 5 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 24 +++--- .../data/recipe/RagiumHeatRecipeProvider.kt | 5 -- .../recipe/RagiumMechanicalRecipeProvider.kt | 11 +-- .../recipe/RagiumVanillaRecipeProvider.kt | 4 +- .../ragium/data/tag/RagiumItemTagsProvider.kt | 4 +- .../ragium/items/carbon_dioxide_bucket.json | 13 ---- ...calcium_oxide_dust.json => lime_dust.json} | 2 +- ...rbonate_dust.json => quick_lime_dust.json} | 2 +- .../resources/assets/ragium/lang/en_us.json | 12 +-- .../resources/assets/ragium/lang/ja_jp.json | 12 +-- ...calcium_oxide_dust.json => lime_dust.json} | 2 +- ...rbonate_dust.json => quick_lime_dust.json} | 2 +- .../data/c/tags/fluid/carbon_dioxide.json | 5 -- .../resources/data/c/tags/fluid/gaseous.json | 1 - .../resources/data/c/tags/item/buckets.json | 1 - .../c/tags/item/buckets/carbon_dioxide.json | 5 -- .../resources/data/c/tags/item/dusts.json | 4 +- .../c/tags/item/dusts/calcium_carbonate.json | 5 -- .../data/c/tags/item/dusts/calcium_oxide.json | 5 -- .../data/c/tags/item/dusts/lime.json | 5 ++ .../data/c/tags/item/dusts/quick_lime.json | 5 ++ .../{sticky_balls.json => slime_balls.json} | 1 - .../ragium/chemical/calcium_carbonate.json | 11 +++ .../ragium/ragium/chemical/calcium_oxide.json | 11 +++ .../ragium/ragium/chemical/carbonate.json | 12 +++ .../ragium/chemical/sodium_carbonate.json | 12 +++ .../data/ragium/recipe/assembling/cobweb.json | 2 +- ...m_oxide_dust.json => quick_lime_dust.json} | 4 +- ..._dust_from_calcite.json => lime_dust.json} | 7 +- .../ragium/recipe/melting/carbon_dioxide.json | 12 --- .../recipe/pyrolyzing/calcium_oxide_dust.json | 16 ---- .../sodium_carbonate_dust_from_solution.json | 14 ++-- .../ragium/recipe/shaped/particle_board.json | 2 +- .../data/ragium/recipe/shapeless/cement.json | 2 +- ...m_oxide_dust.json => quick_lime_dust.json} | 4 +- .../hiiragi283/lib/data/HolderAcceptor.kt | 73 ++++++++++-------- .../criterion/HTBlockPredicateBuilder.kt | 73 ++++++++++++++++++ .../criterion/HTItemPredicateBuilder.kt | 3 + .../lib/recipe/base/HTRecipeFactories.kt | 13 ++++ .../lib/recipe/base/HTRecipePredicates.kt | 9 +++ .../lib/recipe/input/HTLocationRecipeInput.kt | 20 +++++ .../kotlin/hiiragi283/lib/tag/HTCommonTags.kt | 3 - .../api/data/chemical/RagiumChemicals.kt | 40 ++++++++++ .../ragium/api/material/RagiumMaterial.kt | 6 +- .../api/recipe/RTResourceExtractingRecipe.kt | 33 +++----- .../ragium/common/fluid/RagiumFluids.kt | 3 - .../textures/item/calcium_oxide_dust.png | Bin 267 -> 0 bytes .../assets/ragium/textures/item/lime_dust.png | Bin 0 -> 334 bytes ...carbonate_dust.png => quick_lime_dust.png} | Bin 52 files changed, 331 insertions(+), 198 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json rename src/generated/resources/assets/ragium/items/{calcium_oxide_dust.json => lime_dust.json} (52%) rename src/generated/resources/assets/ragium/items/{calcium_carbonate_dust.json => quick_lime_dust.json} (50%) rename src/generated/resources/assets/ragium/models/item/{calcium_oxide_dust.json => lime_dust.json} (57%) rename src/generated/resources/assets/ragium/models/item/{calcium_carbonate_dust.json => quick_lime_dust.json} (55%) delete mode 100644 src/generated/resources/data/c/tags/fluid/carbon_dioxide.json delete mode 100644 src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json delete mode 100644 src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json delete mode 100644 src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/lime.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/quick_lime.json rename src/generated/resources/data/c/tags/item/{sticky_balls.json => slime_balls.json} (67%) create mode 100644 src/generated/resources/data/ragium/ragium/chemical/calcium_carbonate.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/calcium_oxide.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/carbonate.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/sodium_carbonate.json rename src/generated/resources/data/ragium/recipe/blasting/{calcium_oxide_dust.json => quick_lime_dust.json} (58%) rename src/generated/resources/data/ragium/recipe/crushing/{calcium_carbonate_dust_from_calcite.json => lime_dust.json} (51%) delete mode 100644 src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json delete mode 100644 src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json rename src/generated/resources/data/ragium/recipe/{reacting => refining}/sodium_carbonate_dust_from_solution.json (62%) rename src/generated/resources/data/ragium/recipe/smelting/{calcium_oxide_dust.json => quick_lime_dust.json} (58%) create mode 100644 src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTBlockPredicateBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/input/HTLocationRecipeInput.kt delete mode 100644 src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png create mode 100644 src/main/resources/assets/ragium/textures/item/lime_dust.png rename src/main/resources/assets/ragium/textures/item/{calcium_carbonate_dust.png => quick_lime_dust.png} (100%) diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index b2cb40b64..d0286548b 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -138,10 +138,6 @@ data object RagiumClient : HTClientMod() { colorTint(Color(0x99cc33)) } - register.register(RagiumFluids.CARBON_DIOXIDE) { - transparent() - colorTint(Color(0x336699)) - } register.register(RagiumFluids.WOOD_TAR) { molten() colorTint(Color(0x663333)) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 1942cc331..c4c7bd438 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -100,7 +100,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.OXYGEN, "Oxygen") addFluid(RagiumFluids.CHLORINE, "Chlorine") - addFluid(RagiumFluids.CARBON_DIOXIDE, "Carbon Dioxide") addFluid(RagiumFluids.WOOD_TAR, "Wood Tar") addFluid(RagiumFluids.COAL_TAR, "Coal Tar") addFluid(RagiumFluids.AROMATIC_COMPOUND, "Aromatic Compound") @@ -251,6 +250,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.HYDROXIDE, "Hydroxide") addFromKey(RagiumChemicals.WATER, "Water") + addFromKey(RagiumChemicals.CARBONATE, "Carbonate") addFromKey(RagiumChemicals.NITRATE, "Nitrate") addFromKey(RagiumChemicals.NITRIC_ACID, "Nitric Acid") addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "Hydrogen Fluoride") @@ -258,6 +258,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.CRYOLITE, "Cryolite") addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "Sodium Hydroxide") + addFromKey(RagiumChemicals.SODIUM_CARBONATE, "Sodium Carbonate") addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "Sodium Chloride") addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "Aluminum Oxide") addFromKey(RagiumChemicals.SILICON_DIOXIDE, "Silicon Dioxide") @@ -268,6 +269,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "Hydrogen chloride") addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "Potassium Nitrate") + addFromKey(RagiumChemicals.CALCIUM_CARBONATE, "Calcium Carbonate") + addFromKey(RagiumChemicals.CALCIUM_OXIDE, "Calcium Oxide") // Element addFromKey(RagiumElements.HYDROGEN, "Hydrogen") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 462997b08..ed0653782 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -96,7 +96,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.OXYGEN, "酸素") addFluid(RagiumFluids.CHLORINE, "塩素") - addFluid(RagiumFluids.CARBON_DIOXIDE, "二酸化炭素") addFluid(RagiumFluids.WOOD_TAR, "木タール") addFluid(RagiumFluids.COAL_TAR, "石炭タール") addFluid(RagiumFluids.AROMATIC_COMPOUND, "芳香族化合物") @@ -247,6 +246,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.HYDROXIDE, "水酸化物") addFromKey(RagiumChemicals.WATER, "水") + addFromKey(RagiumChemicals.CARBONATE, "炭酸塩") addFromKey(RagiumChemicals.NITRATE, "硝酸塩") addFromKey(RagiumChemicals.NITRIC_ACID, "硝酸") addFromKey(RagiumChemicals.HYDROGEN_FLUORIDE, "フッ化水素") @@ -254,6 +254,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.CRYOLITE, "氷晶石") addFromKey(RagiumChemicals.SODIUM_HYDROXIDE, "水酸化ナトリウム") + addFromKey(RagiumChemicals.SODIUM_CARBONATE, "炭酸ナトリウム") addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "塩化ナトリウム") addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "酸化アルミニウム") addFromKey(RagiumChemicals.SILICON_DIOXIDE, "二酸化ケイ素") @@ -264,6 +265,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.HYDROGEN_CHLORIDE, "塩化水素") addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "硝酸カリウム") + addFromKey(RagiumChemicals.CALCIUM_CARBONATE, "炭酸カルシウム") + addFromKey(RagiumChemicals.CALCIUM_OXIDE, "酸化カルシウム") // Element addFromKey(RagiumElements.HYDROGEN, "水素") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 0cb706ecd..1d5a5effb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -318,9 +318,8 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu exp = 0.15f } // 2x NaOH (aq) + CO2 -> Na2CO3 + H2O - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.NAOH_SOLUTION) } - secondaryIngredient { +holderSet(RagiumFluids.CARBON_DIOXIDE) } + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumFluids.NAOH_SOLUTION) } fluidResult { +Fluids.WATER amount *= 2 @@ -344,17 +343,22 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } }.save(exporter) + // Calcite / Dripstone -> CaCO3 + RagiumRecipeBuilders.crushing { + ingredient { + items { + +Items.CALCITE + +Items.DRIPSTONE_BLOCK + } + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.LIME) } + }.save(exporter) // CaCO3 -> CaO + CO2 VanillaRecipeBuilders.smeltingAndBlasting(exporter) { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.LIME) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.QUICK_LIME) } exp = 0.15f } - RagiumRecipeBuilders.pyrolyzing { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } - fluidResult { +RagiumFluids.CARBON_DIOXIDE } - }.save(exporter) // Wood Pulp + NaOH aq -> Paper Pulp RagiumRecipeBuilders.bathing { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 66fa4a4ef..2253a155d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -296,11 +296,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } }.save(exporter) - // C -> CO2 - RagiumRecipeBuilders.melting { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CARBON) } - result { +RagiumFluids.CARBON_DIOXIDE } - }.save(exporter) // S -> SO2 RagiumRecipeBuilders.melting { ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SULFUR) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 89adb2105..444d783c3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -10,7 +10,6 @@ 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.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart @@ -85,13 +84,13 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable extra { items { +Items.WARPED_FUNGUS } } result { +Items.WARPED_NYLIUM } }.save(exporter) - // String + Sticky -> Cobweb + // String + Slime Ball -> Cobweb RagiumRecipeBuilders.assembling { ingredient { +holderSet(Tags.Items.STRINGS) count = 5 } - extra { +holderSet(HTCommonTags.Items.STICKY_BALLS) } + extra { +holderSet(Tags.Items.SLIME_BALLS) } result { +Items.COBWEB } }.save(exporter) @@ -635,12 +634,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable recipeId suffix "_from_ore" }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { items { +Items.CALCITE } } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CALCIUM_CARBONATE) } - recipeId suffix "_from_calcite" - }.save(exporter) - RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } result { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index ae8070dee..585f4a4e9 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -55,7 +55,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut VanillaRecipeBuilders.shaped { hollow8() define('A') { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } - define('B') { +holderSet(HTCommonTags.Items.STICKY_BALLS) } + define('B') { +holderSet(Tags.Items.SLIME_BALLS) } result { +RagiumItems.PARTICLE_BOARD count = 4 @@ -93,7 +93,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // Cement VanillaRecipeBuilders.shapeless { ingredient { +holderSet(Tags.Items.SANDS) } - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.CALCIUM_OXIDE) } + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.QUICK_LIME) } result { +RagiumItems.CEMENT count = 2 diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index d38529767..18623b177 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -67,15 +67,13 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(Tags.Items.FEATHERS).add(RagiumItems.SYNTHETIC_FEATHER) builder(Tags.Items.LEATHERS).add(RagiumItems.SYNTHETIC_LEATHER) builder(Tags.Items.STRINGS).add(RagiumItems.SYNTHETIC_FIBER) + builder(Tags.Items.SLIME_BALLS).add(RagiumItems.STICKY_BALL) builder(HTCommonTags.Items.COAL_COKE).add(RagiumItems.COAL_COKE) builder(HTCommonTags.Items.PAPER).add(createKey(vanillaId("paper"))) builder(HTCommonTags.Items.PITCH_COKE).add(RagiumItems.PITCH_COKE) builder(HTCommonTags.Items.PLASTICS).add(RagiumItems.PLASTIC_PLATE) builder(HTCommonTags.Items.SILICON).add(RagiumItems.CRUDE_SILICON) - builder(HTCommonTags.Items.STICKY_BALLS) - .addTag(Tags.Items.SLIME_BALLS) - .add(RagiumItems.STICKY_BALL) builder(RagiumTags.Items.COALS) .add(RagiumItems.BAMBOO_CHARCOAL) diff --git a/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json b/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json deleted file mode 100644 index a7eb3a34b..000000000 --- a/src/generated/resources/assets/ragium/items/carbon_dioxide_bucket.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "model": { - "type": "neoforge:fluid_container", - "apply_fluid_luminosity": false, - "flip_gas": true, - "fluid": "ragium:carbon_dioxide", - "textures": { - "base": "minecraft:item/bucket", - "fluid": "neoforge:item/mask/bucket_fluid", - "particle": "minecraft:item/bucket" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/items/lime_dust.json similarity index 52% rename from src/generated/resources/assets/ragium/items/calcium_oxide_dust.json rename to src/generated/resources/assets/ragium/items/lime_dust.json index 19e4e3c6a..f67dd04a3 100644 --- a/src/generated/resources/assets/ragium/items/calcium_oxide_dust.json +++ b/src/generated/resources/assets/ragium/items/lime_dust.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/calcium_oxide_dust" + "model": "ragium:item/lime_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/quick_lime_dust.json similarity index 50% rename from src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json rename to src/generated/resources/assets/ragium/items/quick_lime_dust.json index 46c0e2bba..ebf864844 100644 --- a/src/generated/resources/assets/ragium/items/calcium_carbonate_dust.json +++ b/src/generated/resources/assets/ragium/items/quick_lime_dust.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/calcium_carbonate_dust" + "model": "ragium:item/quick_lime_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index c0b7e3407..f0e97cd0f 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -31,7 +31,6 @@ "block.ragium.blue_dye": "Blue Dye", "block.ragium.brewery": "Brewery", "block.ragium.brown_dye": "Brown Dye", - "block.ragium.carbon_dioxide": "Carbon Dioxide", "block.ragium.charcoal_block": "Block of Charcoal", "block.ragium.chemical_bath": "Chemical Bath", "block.ragium.chemical_machine_casing": "Machine Casing (Chemical)", @@ -209,9 +208,6 @@ "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", - "item.ragium.calcium_carbonate_dust": "Calcium Carbonate Dust", - "item.ragium.calcium_oxide_dust": "Calcium Oxide Dust", - "item.ragium.carbon_dioxide_bucket": "Carbon Dioxide Bucket", "item.ragium.carbon_dust": "Carbon Dust", "item.ragium.carbon_fiber": "Carbon Fiber", "item.ragium.cement": "Cement", @@ -258,6 +254,7 @@ "item.ragium.lapis_dust": "Lapis Dust", "item.ragium.light_blue_dye_bucket": "Light Blue Dye Bucket", "item.ragium.light_gray_dye_bucket": "Light Gray Dye Bucket", + "item.ragium.lime_dust": "Lime Dust", "item.ragium.lime_dye_bucket": "Lime Dye Bucket", "item.ragium.lingering_bottle": "Lingering Bottle", "item.ragium.liquid_explosive_bucket": "Liquid Explosive Bucket", @@ -289,6 +286,7 @@ "item.ragium.prismarine_dust": "Prismarine Dust", "item.ragium.purple_dye_bucket": "Purple Dye Bucket", "item.ragium.quartz_dust": "Quartz Dust", + "item.ragium.quick_lime_dust": "Quick Lime Dust", "item.ragium.raginite_dust": "Raginite Dust", "item.ragium.red_dye_bucket": "Red Dye Bucket", "item.ragium.resin_bucket": "Resin Bucket", @@ -331,7 +329,10 @@ "item.ragium.yellow_dye_bucket": "Yellow Dye Bucket", "ragium.chemical.ragium.aluminum": "Aluminum", "ragium.chemical.ragium.aluminum_oxide": "Aluminum Oxide", + "ragium.chemical.ragium.calcium_carbonate": "Calcium Carbonate", + "ragium.chemical.ragium.calcium_oxide": "Calcium Oxide", "ragium.chemical.ragium.carbon": "Carbon", + "ragium.chemical.ragium.carbonate": "Carbonate", "ragium.chemical.ragium.chlorine": "Chlorine", "ragium.chemical.ragium.copper": "Copper", "ragium.chemical.ragium.cryolite": "Cryolite", @@ -350,6 +351,7 @@ "ragium.chemical.ragium.potassium_nitrate": "Potassium Nitrate", "ragium.chemical.ragium.silicon": "Silicon", "ragium.chemical.ragium.silicon_dioxide": "Silicon Dioxide", + "ragium.chemical.ragium.sodium_carbonate": "Sodium Carbonate", "ragium.chemical.ragium.sodium_chloride": "Sodium Chloride", "ragium.chemical.ragium.sodium_hydroxide": "Sodium Hydroxide", "ragium.chemical.ragium.sulfate": "Sulfate", @@ -398,7 +400,6 @@ "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", "tag.fluid.c.bleach": "Bleach", - "tag.fluid.c.carbon_dioxide": "Carbon Dioxide", "tag.fluid.c.chlorine": "Chlorine", "tag.fluid.c.coal_tar": "Coal Tar", "tag.fluid.c.crude_oil": "Crude Oil", @@ -447,7 +448,6 @@ "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.carbon_dioxide": "Carbon Dioxide Bucket", "tag.item.c.buckets.chlorine": "Chlorine Bucket", "tag.item.c.buckets.coal_tar": "Coal Tar Bucket", "tag.item.c.buckets.crude_oil": "Crude Oil Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 9260bf604..65ff63a4a 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -31,7 +31,6 @@ "block.ragium.blue_dye": "青色の染料", "block.ragium.brewery": "醸造機", "block.ragium.brown_dye": "茶色の染料", - "block.ragium.carbon_dioxide": "二酸化炭素", "block.ragium.charcoal_block": "木炭ブロック", "block.ragium.chemical_bath": "化学浴槽", "block.ragium.chemical_machine_casing": "機械筐体 (化学)", @@ -209,9 +208,6 @@ "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", - "item.ragium.calcium_carbonate_dust": "炭酸カルシウムの粉", - "item.ragium.calcium_oxide_dust": "酸化カルシウムの粉", - "item.ragium.carbon_dioxide_bucket": "二酸化炭素入りバケツ", "item.ragium.carbon_dust": "炭素の粉", "item.ragium.carbon_fiber": "炭素繊維", "item.ragium.cement": "セメント", @@ -258,6 +254,7 @@ "item.ragium.lapis_dust": "ラピスの粉", "item.ragium.light_blue_dye_bucket": "空色の染料入りバケツ", "item.ragium.light_gray_dye_bucket": "薄灰色の染料入りバケツ", + "item.ragium.lime_dust": "石灰の粉", "item.ragium.lime_dye_bucket": "黄緑色の染料入りバケツ", "item.ragium.lingering_bottle": "残留瓶", "item.ragium.liquid_explosive_bucket": "液体爆薬入りバケツ", @@ -289,6 +286,7 @@ "item.ragium.prismarine_dust": "プリズマリンの粉", "item.ragium.purple_dye_bucket": "紫色の染料入りバケツ", "item.ragium.quartz_dust": "水晶の粉", + "item.ragium.quick_lime_dust": "生石灰の粉", "item.ragium.raginite_dust": "ラギナイトの粉", "item.ragium.red_dye_bucket": "赤色の染料入りバケツ", "item.ragium.resin_bucket": "樹脂入りバケツ", @@ -331,7 +329,10 @@ "item.ragium.yellow_dye_bucket": "黄色の染料入りバケツ", "ragium.chemical.ragium.aluminum": "アルミニウム", "ragium.chemical.ragium.aluminum_oxide": "酸化アルミニウム", + "ragium.chemical.ragium.calcium_carbonate": "炭酸カルシウム", + "ragium.chemical.ragium.calcium_oxide": "酸化カルシウム", "ragium.chemical.ragium.carbon": "炭素", + "ragium.chemical.ragium.carbonate": "炭酸塩", "ragium.chemical.ragium.chlorine": "塩素", "ragium.chemical.ragium.copper": "銅", "ragium.chemical.ragium.cryolite": "氷晶石", @@ -350,6 +351,7 @@ "ragium.chemical.ragium.potassium_nitrate": "硝酸カリウム", "ragium.chemical.ragium.silicon": "ケイ素", "ragium.chemical.ragium.silicon_dioxide": "二酸化ケイ素", + "ragium.chemical.ragium.sodium_carbonate": "炭酸ナトリウム", "ragium.chemical.ragium.sodium_chloride": "塩化ナトリウム", "ragium.chemical.ragium.sodium_hydroxide": "水酸化ナトリウム", "ragium.chemical.ragium.sulfate": "硫酸塩", @@ -398,7 +400,6 @@ "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", "tag.fluid.c.bleach": "漂白剤", - "tag.fluid.c.carbon_dioxide": "二酸化炭素", "tag.fluid.c.chlorine": "塩素", "tag.fluid.c.coal_tar": "石炭タール", "tag.fluid.c.crude_oil": "原油", @@ -447,7 +448,6 @@ "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", "tag.item.c.buckets.bleach": "漂白剤入りバケツ", - "tag.item.c.buckets.carbon_dioxide": "二酸化炭素入りバケツ", "tag.item.c.buckets.chlorine": "塩素入りバケツ", "tag.item.c.buckets.coal_tar": "石炭タール入りバケツ", "tag.item.c.buckets.crude_oil": "原油入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json b/src/generated/resources/assets/ragium/models/item/lime_dust.json similarity index 57% rename from src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json rename to src/generated/resources/assets/ragium/models/item/lime_dust.json index 4b827ffa6..7a80a0ac3 100644 --- a/src/generated/resources/assets/ragium/models/item/calcium_oxide_dust.json +++ b/src/generated/resources/assets/ragium/models/item/lime_dust.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/calcium_oxide_dust" + "layer0": "ragium:item/lime_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/quick_lime_dust.json similarity index 55% rename from src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json rename to src/generated/resources/assets/ragium/models/item/quick_lime_dust.json index 1354ddc0e..b16de6ccd 100644 --- a/src/generated/resources/assets/ragium/models/item/calcium_carbonate_dust.json +++ b/src/generated/resources/assets/ragium/models/item/quick_lime_dust.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/calcium_carbonate_dust" + "layer0": "ragium:item/quick_lime_dust" } } \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json b/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json deleted file mode 100644 index 569a44033..000000000 --- a/src/generated/resources/data/c/tags/fluid/carbon_dioxide.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:carbon_dioxide" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/gaseous.json b/src/generated/resources/data/c/tags/fluid/gaseous.json index db825acbd..6ce4deb51 100644 --- a/src/generated/resources/data/c/tags/fluid/gaseous.json +++ b/src/generated/resources/data/c/tags/fluid/gaseous.json @@ -1,6 +1,5 @@ { "values": [ - "#c:carbon_dioxide", "#c:chlorine", "#c:hydrogen", "#c:hydrogen_chloride", diff --git a/src/generated/resources/data/c/tags/item/buckets.json b/src/generated/resources/data/c/tags/item/buckets.json index 99dce57f0..950bcc274 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -4,7 +4,6 @@ "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", "#c:buckets/bleach", - "#c:buckets/carbon_dioxide", "#c:buckets/chlorine", "#c:buckets/coal_tar", "#c:buckets/crude_oil", diff --git a/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json b/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json deleted file mode 100644 index ec0f9fc7c..000000000 --- a/src/generated/resources/data/c/tags/item/buckets/carbon_dioxide.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:carbon_dioxide_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index aac1387a8..1bb08bb6d 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -4,8 +4,6 @@ "#c:dusts/amethyst", "#c:dusts/bauxite", "#c:dusts/borax", - "#c:dusts/calcium_carbonate", - "#c:dusts/calcium_oxide", "#c:dusts/carbon", "#c:dusts/charcoal", "#c:dusts/coal", @@ -19,12 +17,14 @@ "#c:dusts/gold", "#c:dusts/iron", "#c:dusts/lapis", + "#c:dusts/lime", "#c:dusts/netherite", "#c:dusts/niter", "#c:dusts/obsidian", "#c:dusts/paper", "#c:dusts/prismarine", "#c:dusts/quartz", + "#c:dusts/quick_lime", "#c:dusts/raginite", "#c:dusts/salt", "#c:dusts/silicon", diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json deleted file mode 100644 index 5bad65c1f..000000000 --- a/src/generated/resources/data/c/tags/item/dusts/calcium_carbonate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:calcium_carbonate_dust" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json b/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json deleted file mode 100644 index fba81a24e..000000000 --- a/src/generated/resources/data/c/tags/item/dusts/calcium_oxide.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:calcium_oxide_dust" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/lime.json b/src/generated/resources/data/c/tags/item/dusts/lime.json new file mode 100644 index 000000000..ef7605535 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/lime.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:lime_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/quick_lime.json b/src/generated/resources/data/c/tags/item/dusts/quick_lime.json new file mode 100644 index 000000000..317bd6275 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/quick_lime.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:quick_lime_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/sticky_balls.json b/src/generated/resources/data/c/tags/item/slime_balls.json similarity index 67% rename from src/generated/resources/data/c/tags/item/sticky_balls.json rename to src/generated/resources/data/c/tags/item/slime_balls.json index f9f3b6521..cd41f1d1e 100644 --- a/src/generated/resources/data/c/tags/item/sticky_balls.json +++ b/src/generated/resources/data/c/tags/item/slime_balls.json @@ -1,6 +1,5 @@ { "values": [ - "#c:slime_balls", "ragium:sticky_ball" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/calcium_carbonate.json b/src/generated/resources/data/ragium/ragium/chemical/calcium_carbonate.json new file mode 100644 index 000000000..10b17363c --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/calcium_carbonate.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:calcium" + }, + { + "chemical": "ragium:carbonate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/calcium_oxide.json b/src/generated/resources/data/ragium/ragium/chemical/calcium_oxide.json new file mode 100644 index 000000000..a20f9f3bb --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/calcium_oxide.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:calcium" + }, + { + "element": "ragium:oxygen" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/carbonate.json b/src/generated/resources/data/ragium/ragium/chemical/carbonate.json new file mode 100644 index 000000000..f688fce9b --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/carbonate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:carbon" + }, + { + "element": "ragium:oxygen", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/sodium_carbonate.json b/src/generated/resources/data/ragium/ragium/chemical/sodium_carbonate.json new file mode 100644 index 000000000..7061f89cc --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/sodium_carbonate.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:sodium", + "weight": 2 + }, + { + "chemical": "ragium:carbonate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/cobweb.json b/src/generated/resources/data/ragium/recipe/assembling/cobweb.json index 34c481d04..9f13c6b65 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/cobweb.json +++ b/src/generated/resources/data/ragium/recipe/assembling/cobweb.json @@ -2,7 +2,7 @@ "type": "ragium:assembling", "extra": { "count": 1, - "items": "#c:sticky_balls" + "items": "#c:slime_balls" }, "ingredient": { "count": 5, diff --git a/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/blasting/quick_lime_dust.json similarity index 58% rename from src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json rename to src/generated/resources/data/ragium/recipe/blasting/quick_lime_dust.json index cd8af007b..90dd722f1 100644 --- a/src/generated/resources/data/ragium/recipe/blasting/calcium_oxide_dust.json +++ b/src/generated/resources/data/ragium/recipe/blasting/quick_lime_dust.json @@ -3,8 +3,8 @@ "category": "misc", "cookingtime": 100, "experience": 0.15, - "ingredient": "#c:dusts/calcium_carbonate", + "ingredient": "#c:dusts/lime", "result": { - "id": "ragium:calcium_oxide_dust" + "id": "ragium:quick_lime_dust" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json b/src/generated/resources/data/ragium/recipe/crushing/lime_dust.json similarity index 51% rename from src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json rename to src/generated/resources/data/ragium/recipe/crushing/lime_dust.json index 73a1544e3..e67f6790d 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/calcium_carbonate_dust_from_calcite.json +++ b/src/generated/resources/data/ragium/recipe/crushing/lime_dust.json @@ -2,11 +2,14 @@ "type": "ragium:crushing", "ingredient": { "count": 1, - "items": "minecraft:calcite" + "items": [ + "minecraft:calcite", + "minecraft:dripstone_block" + ] }, "result": { "count": 1, - "id": "ragium:calcium_carbonate_dust" + "id": "ragium:lime_dust" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json b/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json deleted file mode 100644 index 19d3b1636..000000000 --- a/src/generated/resources/data/ragium/recipe/melting/carbon_dioxide.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:melting", - "ingredient": { - "count": 1, - "items": "#c:dusts/carbon" - }, - "result": { - "amount": 1000, - "id": "ragium:carbon_dioxide" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json deleted file mode 100644 index 7b6805650..000000000 --- a/src/generated/resources/data/ragium/recipe/pyrolyzing/calcium_oxide_dust.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:pyrolyzing", - "fluid_result": { - "amount": 1000, - "id": "ragium:carbon_dioxide" - }, - "ingredient": { - "count": 1, - "items": "#c:dusts/calcium_carbonate" - }, - "item_result": { - "count": 1, - "id": "ragium:calcium_oxide_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/refining/sodium_carbonate_dust_from_solution.json similarity index 62% rename from src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json rename to src/generated/resources/data/ragium/recipe/refining/sodium_carbonate_dust_from_solution.json index bf3369b22..9b4e8c121 100644 --- a/src/generated/resources/data/ragium/recipe/reacting/sodium_carbonate_dust_from_solution.json +++ b/src/generated/resources/data/ragium/recipe/refining/sodium_carbonate_dust_from_solution.json @@ -1,20 +1,16 @@ { - "type": "ragium:reacting", + "type": "ragium:refining", "fluid_result": { "amount": 2000, "id": "minecraft:water" }, - "item_result": { - "count": 1, - "id": "ragium:sodium_carbonate_dust" - }, - "primary_ingredient": { + "ingredient": { "amount": 1000, "fluids": "#c:sodium_hydroxide_solution" }, - "secondary_ingredient": { - "amount": 1000, - "fluids": "#c:carbon_dioxide" + "item_result": { + "count": 1, + "id": "ragium:sodium_carbonate_dust" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/particle_board.json b/src/generated/resources/data/ragium/recipe/shaped/particle_board.json index 625261757..3d9ae7d04 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/particle_board.json +++ b/src/generated/resources/data/ragium/recipe/shaped/particle_board.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "A": "#c:dusts/wood", - "B": "#c:sticky_balls" + "B": "#c:slime_balls" }, "pattern": [ "AAA", diff --git a/src/generated/resources/data/ragium/recipe/shapeless/cement.json b/src/generated/resources/data/ragium/recipe/shapeless/cement.json index 3f43b9d05..00072652a 100644 --- a/src/generated/resources/data/ragium/recipe/shapeless/cement.json +++ b/src/generated/resources/data/ragium/recipe/shapeless/cement.json @@ -3,7 +3,7 @@ "category": "misc", "ingredients": [ "#c:sands", - "#c:dusts/calcium_oxide" + "#c:dusts/quick_lime" ], "result": { "count": 2, diff --git a/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json b/src/generated/resources/data/ragium/recipe/smelting/quick_lime_dust.json similarity index 58% rename from src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json rename to src/generated/resources/data/ragium/recipe/smelting/quick_lime_dust.json index 0b66d4608..db1a2482e 100644 --- a/src/generated/resources/data/ragium/recipe/smelting/calcium_oxide_dust.json +++ b/src/generated/resources/data/ragium/recipe/smelting/quick_lime_dust.json @@ -3,8 +3,8 @@ "category": "misc", "cookingtime": 200, "experience": 0.15, - "ingredient": "#c:dusts/calcium_carbonate", + "ingredient": "#c:dusts/lime", "result": { - "id": "ragium:calcium_oxide_dust" + "id": "ragium:quick_lime_dust" } } \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/HolderAcceptor.kt b/src/lib/kotlin/hiiragi283/lib/data/HolderAcceptor.kt index 42dd16c65..31fa4d1d7 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/HolderAcceptor.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/HolderAcceptor.kt @@ -3,12 +3,13 @@ package hiiragi283.lib.data import hiiragi283.lib.registry.HTDeferredBlockAndItem +import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.util.HTBuilderMarker -import hiiragi283.lib.util.HTDelegates import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.core.Holder import net.minecraft.core.HolderSet import net.minecraft.world.item.Item +import net.minecraft.world.level.block.Block import net.minecraft.world.level.material.Fluid import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind @@ -27,6 +28,21 @@ interface HolderAcceptor { */ operator fun Holder.unaryPlus() + /** + * [Block]向けの[HolderAcceptor]の拡張インターフェースです。 + * @since 26.1.8 + */ + interface BlockAcceptor : HolderAcceptor { + @Suppress("DEPRECATION") + operator fun Block.unaryPlus() { + +this.builtInRegistryHolder() + } + + operator fun HTDeferredBlockAndItem<*, *>.unaryPlus() { + +this.block + } + } + /** * [Fluid]向けの[HolderAcceptor]の拡張インターフェースです。 */ @@ -35,6 +51,13 @@ interface HolderAcceptor { operator fun Fluid.unaryPlus() { +this.builtInRegistryHolder() } + + /** + * @since 26.1.8 + */ + operator fun HTFluidContent.unaryPlus() { + +this.sourceHolder + } } /** @@ -51,36 +74,6 @@ interface HolderAcceptor { } } - // ValueBuilder // - - /** - * 単一の[Holder]のみを保持する[HolderAcceptor]の実装クラスです。 - */ - open class ValueBuilder : HolderAcceptor { - private var holder: Holder by HTDelegates.onceInitialize() - - override fun Holder.unaryPlus() { - check(this.delegate is Holder.Reference) { "Cannot serialize given holder $this" } - holder = this - } - - fun build(): Holder = holder - } - - /** - * [Fluid]向けの[ValueBuilder]の拡張クラスです。 - */ - class FluidValueBuilder : - ValueBuilder(), - FluidAcceptor - - /** - * [Item]向けの[ValueBuilder]の拡張クラスです。 - */ - class ItemValueBuilder : - ValueBuilder(), - ItemAcceptor - // SetBuilder // /** @@ -97,6 +90,13 @@ interface HolderAcceptor { fun build(): HolderSet = HolderSet.direct(holders) } + /** + * [Block]向けの[SetBuilder]の拡張クラスです。 + */ + class BlockSetBuilder : + SetBuilder(), + BlockAcceptor + /** * [Fluid]向けの[SetBuilder]の拡張クラスです。 */ @@ -112,6 +112,17 @@ interface HolderAcceptor { ItemAcceptor companion object { + /** + * @since 26.1.8 + */ + @JvmStatic + inline fun buildBlockSet(builderAction: BlockSetBuilder.() -> Unit): HolderSet { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return BlockSetBuilder().apply(builderAction).build() + } + /** * @since 26.1.7 */ diff --git a/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTBlockPredicateBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTBlockPredicateBuilder.kt new file mode 100644 index 000000000..e6c826418 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTBlockPredicateBuilder.kt @@ -0,0 +1,73 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.advancement.criterion + +import hiiragi283.lib.data.HolderAcceptor +import hiiragi283.lib.util.HTBuilderMarker +import hiiragi283.lib.util.HTDelegates +import net.minecraft.advancements.criterion.BlockPredicate +import net.minecraft.advancements.criterion.DataComponentMatchers +import net.minecraft.advancements.criterion.NbtPredicate +import net.minecraft.advancements.criterion.StatePropertiesPredicate +import net.minecraft.core.HolderSet +import net.minecraft.world.level.block.Block +import java.util.Optional +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@HTBuilderMarker +class HTBlockPredicateBuilder { + @PublishedApi internal var blocks: Optional> by HTDelegates.optionalInitialize() + + @PublishedApi internal var properties: Optional by HTDelegates.optionalInitialize() + + @PublishedApi internal var nbt: Optional by HTDelegates.optionalInitialize() + + @PublishedApi internal var components: DataComponentMatchers by HTDelegates.onceInitialize { + DataComponentMatchers.ANY + } + + // blocks + operator fun HolderSet.unaryPlus() { + blocks = Optional.of(this) + } + + inline fun blocks(builderAction: HolderAcceptor.BlockSetBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HolderAcceptor.buildBlockSet(builderAction) + } + + // properties + inline fun properties(builderAction: StatePropertiesPredicate.Builder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + properties = StatePropertiesPredicate.Builder.properties().apply(builderAction).build() + } + + // nbt + operator fun NbtPredicate.unaryPlus() { + nbt = Optional.of(this) + } + + // components + operator fun DataComponentMatchers.unaryPlus() { + components = this + } + + inline fun components(builderAction: DataComponentMatchers.Builder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +DataComponentMatchers.Builder.components().apply(builderAction).build() + } + + fun build(): BlockPredicate = BlockPredicate(blocks, properties, nbt, components) +} diff --git a/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTItemPredicateBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTItemPredicateBuilder.kt index e565bfb10..6d920a2b9 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTItemPredicateBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/advancement/criterion/HTItemPredicateBuilder.kt @@ -29,6 +29,7 @@ class HTItemPredicateBuilder { DataComponentMatchers.ANY } + // items operator fun HolderSet.unaryPlus() { items = Optional.of(this) } @@ -40,10 +41,12 @@ class HTItemPredicateBuilder { +HolderAcceptor.buildItemSet(builderAction) } + // count operator fun MinMaxBounds.Ints.unaryPlus() { count = this } + // components operator fun DataComponentMatchers.unaryPlus() { components = this } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt index 612e4e5c2..9a40fea32 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt @@ -4,11 +4,13 @@ import com.mojang.datafixers.util.Function3 import hiiragi283.lib.recipe.HTRecipeFactory import hiiragi283.lib.recipe.input.HTFluidRecipeInput import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.input.HTLocationRecipeInput import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.input.getItemOrEmpty import net.minecraft.world.item.ItemInstance import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.item.crafting.SingleRecipeInput +import net.minecraft.world.level.block.state.pattern.BlockInWorld import net.neoforged.neoforge.fluids.FluidInstance import java.util.function.BiFunction import java.util.function.Function @@ -46,6 +48,17 @@ data object HTRecipeFactories { override fun produce(input: SingleRecipeInput): OUTPUT = apply(input.item()) } + /** + * @since 26.1.8 + */ + interface Located : SingleInput { + override fun produce(input: HTLocationRecipeInput): OUTPUT = apply(input.blockInWorld) + + @Suppress("DeprecatedCallableAddReplaceWith") + @Deprecated("Not used", level = DeprecationLevel.ERROR) + override fun getMatchingStack(input: BlockInWorld): BlockInWorld = input + } + // Double Input // interface DoubleInput : diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt index 23f763fb4..900374d29 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt @@ -3,11 +3,13 @@ package hiiragi283.lib.recipe.base import hiiragi283.lib.recipe.HTRecipePredicate import hiiragi283.lib.recipe.input.HTFluidRecipeInput import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput +import hiiragi283.lib.recipe.input.HTLocationRecipeInput import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.input.getItemOrEmpty import net.minecraft.world.item.ItemInstance import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.item.crafting.SingleRecipeInput +import net.minecraft.world.level.block.state.pattern.BlockInWorld import net.neoforged.neoforge.common.util.TriPredicate import net.neoforged.neoforge.fluids.FluidInstance import java.util.function.BiPredicate @@ -46,6 +48,13 @@ data object HTRecipePredicates { override fun matches(input: SingleRecipeInput): Boolean = test(input.item()) } + /** + * @since 26.1.8 + */ + fun interface Located : SingleInput { + override fun matches(input: HTLocationRecipeInput): Boolean = test(input.blockInWorld) + } + // Double Input // /** diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/input/HTLocationRecipeInput.kt b/src/lib/kotlin/hiiragi283/lib/recipe/input/HTLocationRecipeInput.kt new file mode 100644 index 000000000..a6b8d2ea8 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/input/HTLocationRecipeInput.kt @@ -0,0 +1,20 @@ +package hiiragi283.lib.recipe.input + +import net.minecraft.core.BlockPos +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.level.block.state.pattern.BlockInWorld + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTLocationRecipeInput(val blockInWorld: BlockInWorld) : RecipeInput { + constructor(level: ServerLevel, pos: BlockPos) : this(BlockInWorld(level, pos, false)) + + override fun getItem(index: Int): ItemStack = error("No item for index: $index") + + override fun size(): Int = 0 +} diff --git a/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt b/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt index c265ff06e..56319382d 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt @@ -57,9 +57,6 @@ data object HTCommonTags { @JvmField val SILICON: TagKey = create("silicon") - @JvmField - val STICKY_BALLS: TagKey = create("sticky_balls") - @JvmStatic private fun create(vararg path: String): TagKey = ItemTags.create(HTConstants.COMMON.toId(*path)) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index 21e300de1..df9816c4e 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -68,6 +68,9 @@ data object RagiumChemicals { val WATER: ResourceKey = create("water") // 2nd Period + @JvmField + val CARBONATE: ResourceKey = create("carbonate") + @JvmField val NITRATE: ResourceKey = create("nitrate") @@ -87,6 +90,9 @@ data object RagiumChemicals { @JvmField val SODIUM_HYDROXIDE: ResourceKey = create("sodium_hydroxide") + @JvmField + val SODIUM_CARBONATE: ResourceKey = create("sodium_carbonate") + @JvmField val SODIUM_CHLORIDE: ResourceKey = create("sodium_chloride") @@ -115,6 +121,12 @@ data object RagiumChemicals { @JvmField val POTASSIUM_NITRATE: ResourceKey = create("potassium_nitrate") + @JvmField + val CALCIUM_CARBONATE: ResourceKey = create("calcium_carbonate") + + @JvmField + val CALCIUM_OXIDE: ResourceKey = create("calcium_oxide") + // Mixtures // @JvmStatic @@ -158,6 +170,13 @@ data object RagiumChemicals { } ) + context.register( + CARBONATE, + HTCompoundChemical.build(context) { + add(RagiumElements.CARBON, 1) + add(RagiumElements.OXYGEN, 3) + } + ) context.register( NITRATE, HTCompoundChemical.build(context) { @@ -202,6 +221,13 @@ data object RagiumChemicals { add(HYDROXIDE, 1) } ) + context.register( + SODIUM_CARBONATE, + HTCompoundChemical.build(context) { + add(RagiumElements.SODIUM, 2) + add(CARBONATE, 1) + } + ) context.register( SODIUM_CHLORIDE, HTCompoundChemical.build(context) { @@ -266,5 +292,19 @@ data object RagiumChemicals { add(NITRATE, 1) } ) + context.register( + CALCIUM_CARBONATE, + HTCompoundChemical.build(context) { + add(RagiumElements.CALCIUM, 1) + add(CARBONATE, 1) + } + ) + context.register( + CALCIUM_OXIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.CALCIUM, 1) + add(RagiumElements.OXYGEN, 1) + } + ) } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 87452f00c..d7bfc8de5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -105,7 +105,7 @@ sealed interface RagiumMaterial : /** * @since 26.1.8 */ - SODIUM_CARBONATE("Sodium Carbonate", "炭酸ナトリウム"), + SODIUM_CARBONATE("Sodium Carbonate", "炭酸ナトリウム", RagiumChemicals.SODIUM_CARBONATE), /** * @since 26.1.7 @@ -120,12 +120,12 @@ sealed interface RagiumMaterial : /** * @since 26.1.8 */ - CALCIUM_CARBONATE("Calcium Carbonate", "炭酸カルシウム"), + LIME("Lime", "石灰", RagiumChemicals.CALCIUM_CARBONATE), /** * @since 26.1.8 */ - CALCIUM_OXIDE("Calcium Oxide", "酸化カルシウム") + QUICK_LIME("Quick Lime", "生石灰", RagiumChemicals.CALCIUM_OXIDE) ; constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt index 78c594314..6a4850c46 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt @@ -2,34 +2,30 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.HTRecipeFactory -import hiiragi283.lib.recipe.HTRecipePredicate 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.HTBiomeCondition +import hiiragi283.lib.recipe.input.HTLocationRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.serialization.codec.HTCodecs -import net.minecraft.core.BlockPos -import net.minecraft.core.Holder import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.item.crafting.RecipeSerializer -import net.minecraft.world.level.Level -import net.minecraft.world.level.biome.Biome +import net.minecraft.world.level.block.state.pattern.BlockInWorld import net.neoforged.neoforge.fluids.FluidStack class RTResourceExtractingRecipe( val condition: HTBiomeCondition, val result: HTFluidResult, override val progressData: HTProgressData -) : HTRecipePredicate, - HTRecipeFactory, - HTProgressRecipe.Simple, - HTSerializableRecipe { +) : HTRecipePredicates.Located, + HTRecipeFactories.Located, + HTProgressRecipe.Simple, + HTSerializableRecipe { companion object { @JvmField val CODEC: MapCodec = HTCodecs.recordMap { instance -> @@ -55,21 +51,12 @@ class RTResourceExtractingRecipe( val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) } - override fun matches(input: Input): Boolean = condition.test(input.biome) + override fun test(input: BlockInWorld): Boolean = condition.test(input.level.getBiome(input.pos)) - override fun produce(input: Input): FluidStack = result.create() + override fun apply(input: BlockInWorld): FluidStack = result.create() override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.RESOURCE_EXTRACTING override fun getType(): HTRecipeType = RagiumRecipeTypes.RESOURCE_EXTRACTING - - @JvmRecord - data class Input(val biome: Holder) : RecipeInput { - constructor(getter: Level, pos: BlockPos) : this(getter.getBiome(pos)) - - override fun getItem(index: Int): ItemStack = error("No item for index: $index") - - override fun size(): Int = 0 - } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index 979c4cb76..5f369ccb1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -142,9 +142,6 @@ data object RagiumFluids { // Chemical // // C - @JvmField - val CARBON_DIOXIDE: HTFluidContent.Virtual = REGISTER.registerVirtual("carbon_dioxide") { properties = gaseous() } - @JvmField val WOOD_TAR: HTFluidContent.Virtual = REGISTER.registerVirtual("wood_tar") { properties = liquid() diff --git a/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png b/src/main/resources/assets/ragium/textures/item/calcium_oxide_dust.png deleted file mode 100644 index 71316781ac03034c7d3923c3e7404d522c674c16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mpok@Ln`8uC7vaGeRcJ}qr`mk znFXFrCR$orMiP>eh7XKcRx>K_D)crrH6?s@{PO1J=Ksl?c@8toNSpEK`}_OG4KYlI zZtx_!n2E+3`@H-2_cxD1vx6Sv#^B)Khrb@^HT;yk`Ku~gNRh1n?*CJYS6$|?kBUlBb5 P^c{nztDnm{r-UW|0v=)W diff --git a/src/main/resources/assets/ragium/textures/item/lime_dust.png b/src/main/resources/assets/ragium/textures/item/lime_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..6f94d1771411fcbf9cbd77205bc38b003afad415 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU}W}maSW+oJTpO??~sFttNfcL zf2SXB7&;F&9(Z&?f~QaS0F%Ii!Uz@)A%UrP9W@mhclAs%J~`W`UV_IrFa6oqd!L_e z)v>p$=ewcv-0+uK>O&3|?X!I)znv4~Sx&MFDBO6<>%(^;$*S+H;@49QCNV3wt5)56 z@|S}pV0GwZ8xN)hiL(UQf^tiqY>1v6_(?&`Va949CWrL<)|~0bKI*$m`ld~4i(pV( z=jHLe6*l~*Ci*j0cl>hqHhAkUk{9$BZ`2XK#Md>bJ esIY;8gPCEv{WQf(8+2uWA`G6celF{r5}E+!#DSy$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/quick_lime_dust.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/calcium_carbonate_dust.png rename to src/main/resources/assets/ragium/textures/item/quick_lime_dust.png From d4d2c2080cd97e7bb054539d968c22254c4f2b13 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 28 Sep 2026 20:30:00 +0900 Subject: [PATCH 18/38] =?UTF-8?q?chore:=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E9=96=93=E3=81=A7=E3=81=AE=E5=B7=AE=E5=88=86?= =?UTF-8?q?=E3=82=92=E7=A2=BA=E8=AA=8D=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=81=AB=20RagiumRegistryDumpReport=20=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/data/RagiumDataGen.kt | 2 + .../ragium/data/RagiumRegistryDumpReport.kt | 48 ++ .../resources/reports/ragium/registries.json | 608 ++++++++++++++++++ .../lib/fluid/FluidInstanceBuilder.kt | 5 - 4 files changed, 658 insertions(+), 5 deletions(-) create mode 100644 src/data/kotlin/hiiragi283/ragium/data/RagiumRegistryDumpReport.kt create mode 100644 src/generated/resources/reports/ragium/registries.json diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 9bc184cb0..6854bc5ec 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -80,5 +80,7 @@ data object RagiumDataGen { event.createProvider(::RagiumEnglishLangProvider) event.createProvider(::RagiumJapaneseLangProvider) + // Report + event.createProvider(::RagiumRegistryDumpReport) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumRegistryDumpReport.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumRegistryDumpReport.kt new file mode 100644 index 000000000..f3b5c3d6b --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumRegistryDumpReport.kt @@ -0,0 +1,48 @@ +package hiiragi283.ragium.data + +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.core.HolderLookup +import net.minecraft.data.CachedOutput +import net.minecraft.data.DataProvider +import net.minecraft.data.PackOutput +import net.minecraft.resources.Identifier +import net.minecraft.resources.ResourceKey +import java.util.concurrent.CompletableFuture + +/** + * @see net.minecraft.data.info.RegistryDumpReport + */ +class RagiumRegistryDumpReport(val output: PackOutput, val future: CompletableFuture) : + DataProvider { + override fun run(cache: CachedOutput): CompletableFuture<*> = + this.future.thenCompose { provider: HolderLookup.Provider -> + val root = JsonObject() + provider.listRegistries().forEach { lookup: HolderLookup.RegistryLookup<*> -> + dumpRegistry(lookup)?.let { root.add(lookup.key().identifier().toString(), it) } + } + DataProvider.saveStable( + cache, + root, + output.getOutputFolder(PackOutput.Target.REPORTS).resolve(RagiumAPI.MOD_ID, "registries.json") + ) + } + + private fun dumpRegistry(lookup: HolderLookup.RegistryLookup<*>): JsonElement? { + val entries = JsonArray() + lookup.listElementIds() + .map(ResourceKey<*>::identifier) + .filter { id: Identifier -> id.namespace == RagiumAPI.MOD_ID } + .map(Identifier::getPath) + .sorted() + .forEach(entries::add) + return when { + entries.isEmpty -> null + else -> entries + } + } + + override fun getName(): String = "Registry Dump" +} diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json new file mode 100644 index 000000000..9989161f3 --- /dev/null +++ b/src/generated/resources/reports/ragium/registries.json @@ -0,0 +1,608 @@ +{ + "minecraft:block": [ + "alloy_smelter", + "aluminum_block", + "arcane_machine_casing", + "aromatic_compound", + "assembler", + "bio_machine_casing", + "black_dye", + "black_steel_block", + "blue_dye", + "brewery", + "brown_dye", + "charcoal_block", + "chemical_bath", + "chemical_machine_casing", + "chemical_reactor", + "coal_coke_block", + "compressor", + "creative_battery", + "creative_tank", + "crude_oil", + "crusher", + "cryolite_block", + "cryolite_slab", + "cryolite_stairs", + "cutting_machine", + "cyan_dye", + "deepslate_niter_ore", + "deepslate_sulfur_ore", + "echo_block", + "electrolyzer", + "electronics_machine_casing", + "enchanter", + "fluid_output_bus", + "fluorite_block", + "fluorite_slab", + "fluorite_stairs", + "freezer", + "fuel", + "gray_dye", + "green_dye", + "heat_machine_casing", + "honey", + "hydrochloric_acid", + "hydrofluoric_acid", + "light_blue_dye", + "light_gray_dye", + "lime_dye", + "liquid_explosive", + "machine_casing", + "magenta_dye", + "mechanical_machine_casing", + "melter", + "mixer", + "naphtha", + "nether_niter_ore", + "nether_sulfur_ore", + "niter_ore", + "nitric_acid", + "orange_dye", + "pink_dye", + "pitch_coke_block", + "planter", + "potion_tank", + "precision_assembler", + "purple_dye", + "pyrolyzer", + "red_dye", + "refinery", + "resin", + "salt_water", + "scanner", + "smelter", + "sodium_hydroxide_solution", + "sooty_iron_block", + "sulfur_ore", + "sulfuric_acid", + "tank", + "void_metal_block", + "void_tank", + "white_dye", + "yellow_dye" + ], + "minecraft:block_entity_type": [ + "alloy_smelter", + "assembler", + "brewery", + "chemical_bath", + "compressor", + "creative_battery", + "creative_tank", + "crusher", + "cutting_machine", + "electrolyzer", + "enchanter", + "fluid_output_bus", + "freezer", + "melter", + "mixer", + "planter", + "potion_tank", + "precision_assembler", + "smelter", + "tank" + ], + "minecraft:creative_mode_tab": [ + "common" + ], + "minecraft:damage_type": [ + "chemical_burn" + ], + "minecraft:data_component_type": [ + "chemical", + "energy", + "fluid", + "memory_disc_data", + "owner_id" + ], + "minecraft:fluid": [ + "alumina_solution", + "anti_rust_oil", + "aromatic_compound", + "black_dye", + "bleach", + "blue_dye", + "brown_dye", + "chlorine", + "coal_tar", + "crude_oil", + "cyan_dye", + "flowing_aromatic_compound", + "flowing_black_dye", + "flowing_blue_dye", + "flowing_brown_dye", + "flowing_crude_oil", + "flowing_cyan_dye", + "flowing_fuel", + "flowing_gray_dye", + "flowing_green_dye", + "flowing_honey", + "flowing_hydrochloric_acid", + "flowing_hydrofluoric_acid", + "flowing_light_blue_dye", + "flowing_light_gray_dye", + "flowing_lime_dye", + "flowing_liquid_explosive", + "flowing_magenta_dye", + "flowing_naphtha", + "flowing_nitric_acid", + "flowing_orange_dye", + "flowing_pink_dye", + "flowing_purple_dye", + "flowing_red_dye", + "flowing_resin", + "flowing_salt_water", + "flowing_sodium_hydroxide_solution", + "flowing_sulfuric_acid", + "flowing_white_dye", + "flowing_yellow_dye", + "fuel", + "gray_dye", + "green_dye", + "honey", + "hydrochloric_acid", + "hydrofluoric_acid", + "hydrogen", + "hydrogen_chloride", + "hydrogen_fluoride", + "light_blue_dye", + "light_gray_dye", + "lime_dye", + "liquid_explosive", + "magenta_dye", + "molten_ender", + "molten_glass", + "molten_glowstone", + "molten_redstone", + "naphtha", + "nitric_acid", + "nitrogen", + "ominous_flux", + "orange_dye", + "oxygen", + "pink_dye", + "potion", + "purple_dye", + "red_dye", + "resin", + "salt_water", + "sodium_hydroxide_solution", + "sulfur_dioxide", + "sulfur_trioxide", + "sulfuric_acid", + "synthetic_resin", + "white_dye", + "wood_tar", + "yellow_dye" + ], + "minecraft:item": [ + "alclad_plate", + "alloy_smelter", + "alumina_dust", + "alumina_solution_bucket", + "aluminum_block", + "aluminum_ingot", + "aluminum_nugget", + "amethyst_dust", + "anti_rust_oil_bucket", + "arcane_machine_casing", + "arcane_machine_parts", + "aromatic_compound_bucket", + "assembler", + "bamboo_charcoal", + "bauxite_dust", + "beeswax", + "bio_machine_casing", + "bio_machine_parts", + "black_dye_bucket", + "black_steel_block", + "black_steel_ingot", + "black_steel_nugget", + "bleach_bucket", + "blue_dye_bucket", + "borax_dust", + "brewery", + "brown_dye_bucket", + "carbon_dust", + "carbon_fiber", + "cement", + "cfrp_plate", + "charcoal_block", + "charcoal_dust", + "chemical_bath", + "chemical_machine_casing", + "chemical_machine_parts", + "chemical_reactor", + "chlorine_bucket", + "circuit_chip", + "coal_coke", + "coal_coke_block", + "coal_dust", + "coal_tar_bucket", + "compressor", + "copper_dust", + "copper_gear", + "creative_battery", + "creative_tank", + "crude_oil_bucket", + "crude_silicon", + "crusher", + "cryolite", + "cryolite_block", + "cryolite_dust", + "cryolite_slab", + "cryolite_stairs", + "cutting_machine", + "cyan_dye_bucket", + "deepslate_niter_ore", + "deepslate_sulfur_ore", + "diamond_dust", + "diamond_gear", + "echo_block", + "echo_dust", + "elder_heart", + "electric_circuit", + "electrolyzer", + "electronics_machine_casing", + "electronics_machine_parts", + "emerald_dust", + "emerald_gear", + "enchanter", + "fluid_output_bus", + "fluorite", + "fluorite_block", + "fluorite_dust", + "fluorite_slab", + "fluorite_stairs", + "freezer", + "fuel_bucket", + "glass_dust", + "gold_dust", + "gold_gear", + "gray_dye_bucket", + "green_dye_bucket", + "heat_machine_casing", + "heat_machine_parts", + "honey_bucket", + "hydrochloric_acid_bucket", + "hydrofluoric_acid_bucket", + "hydrogen_bucket", + "hydrogen_chloride_bucket", + "hydrogen_fluoride_bucket", + "iron_dust", + "iron_gear", + "lapis_dust", + "light_blue_dye_bucket", + "light_gray_dye_bucket", + "lime_dust", + "lime_dye_bucket", + "lingering_bottle", + "liquid_explosive_bucket", + "machine_casing", + "magenta_dye_bucket", + "mechanical_machine_casing", + "mechanical_machine_parts", + "melter", + "memory_disc", + "mixer", + "molten_ender_bucket", + "molten_glass_bucket", + "molten_glowstone_bucket", + "molten_redstone_bucket", + "mortar", + "naphtha_bucket", + "nether_niter_ore", + "nether_sulfur_ore", + "netherite_dust", + "netherite_gear", + "netherite_nugget", + "niter_dust", + "niter_ore", + "nitric_acid_bucket", + "nitrogen_bucket", + "obsidian_dust", + "ominous_flux_bucket", + "orange_dye_bucket", + "oxygen_bucket", + "paper_dust", + "particle_board", + "pink_dye_bucket", + "pitch_coke", + "pitch_coke_block", + "planter", + "plastic_plate", + "potion_bucket", + "potion_tank", + "precision_assembler", + "prismarine_dust", + "purple_dye_bucket", + "pyrolyzer", + "quartz_dust", + "quick_lime_dust", + "raginite_dust", + "red_dye_bucket", + "refinery", + "resin_bucket", + "salt_dust", + "salt_water_bucket", + "scanner", + "silicon_dust", + "silicon_wafer", + "smelter", + "sodium_carbonate_dust", + "sodium_hydroxide_solution_bucket", + "sooty_iron_axe", + "sooty_iron_block", + "sooty_iron_hoe", + "sooty_iron_ingot", + "sooty_iron_nugget", + "sooty_iron_pickaxe", + "sooty_iron_shovel", + "sooty_iron_sword", + "splash_bottle", + "sticky_ball", + "sulfur_dioxide_bucket", + "sulfur_dust", + "sulfur_ore", + "sulfur_trioxide_bucket", + "sulfuric_acid_bucket", + "synthetic_feather", + "synthetic_fiber", + "synthetic_leather", + "synthetic_resin_bucket", + "tank", + "tar", + "tiny_charcoal", + "tiny_coal", + "tiny_coal_coke", + "tiny_pitch_coke", + "void_metal_block", + "void_metal_ingot", + "void_metal_nugget", + "void_tank", + "white_dye_bucket", + "wither_doll", + "wither_star", + "wood_dust", + "wood_gear", + "wood_tar_bucket", + "yellow_dye_bucket" + ], + "minecraft:menu": [ + "block" + ], + "minecraft:mob_effect": [ + "chemical_burn", + "frostbite" + ], + "minecraft:potion": [ + "chemical_burn", + "frostbite", + "long_chemical_burn", + "long_frostbite", + "strong_chemical_burn", + "strong_frostbite" + ], + "minecraft:recipe_serializer": [ + "alloying", + "assembling", + "bathing", + "brewing", + "centrifuging", + "compressing", + "crushing", + "cutting", + "draining", + "electrolyzing", + "enchanting", + "filling", + "freezing", + "melting", + "mixing", + "planting", + "pyrolyzing", + "reacting", + "refining", + "resource/extracting", + "washing" + ], + "minecraft:recipe_type": [ + "alloying", + "assembling", + "bathing", + "brewing", + "centrifuging", + "compressing", + "crushing", + "cutting", + "draining", + "electrolyzing", + "enchanting", + "filling", + "freezing", + "melting", + "mixing", + "planting", + "pyrolyzing", + "reacting", + "refining", + "resource/extracting", + "washing" + ], + "minecraft:worldgen/configured_feature": [ + "lake/crude_oil", + "ore/niter", + "ore/sulfur" + ], + "minecraft:worldgen/placed_feature": [ + "lake/crude_oil", + "nether_ore/niter", + "nether_ore/sulfur", + "ore/niter", + "ore/sulfur" + ], + "neoforge:biome_modifier": [ + "lake/crude_oil", + "nether_ore/niter", + "nether_ore/sulfur", + "ore/niter", + "ore/sulfur" + ], + "neoforge:fluid_ingredient_type": [ + "potion" + ], + "neoforge:fluid_type": [ + "alumina_solution", + "anti_rust_oil", + "aromatic_compound", + "black_dye", + "bleach", + "blue_dye", + "brown_dye", + "chlorine", + "coal_tar", + "crude_oil", + "cyan_dye", + "fuel", + "gray_dye", + "green_dye", + "honey", + "hydrochloric_acid", + "hydrofluoric_acid", + "hydrogen", + "hydrogen_chloride", + "hydrogen_fluoride", + "light_blue_dye", + "light_gray_dye", + "lime_dye", + "liquid_explosive", + "magenta_dye", + "molten_ender", + "molten_glass", + "molten_glowstone", + "molten_redstone", + "naphtha", + "nitric_acid", + "nitrogen", + "ominous_flux", + "orange_dye", + "oxygen", + "pink_dye", + "potion", + "purple_dye", + "red_dye", + "resin", + "salt_water", + "sodium_hydroxide_solution", + "sulfur_dioxide", + "sulfur_trioxide", + "sulfuric_acid", + "synthetic_resin", + "white_dye", + "wood_tar", + "yellow_dye" + ], + "neoforge:ingredient_serializer": [ + "material_tags" + ], + "ragium:chemical": [ + "aluminum", + "aluminum_oxide", + "calcium_carbonate", + "calcium_oxide", + "carbon", + "carbonate", + "chlorine", + "copper", + "cryolite", + "diamond", + "fluorite", + "gold", + "hydrogen", + "hydrogen_chloride", + "hydrogen_fluoride", + "hydroxide", + "iron", + "nitrate", + "nitric_acid", + "nitrogen", + "oxygen", + "potassium_nitrate", + "silicon", + "silicon_dioxide", + "sodium_carbonate", + "sodium_chloride", + "sodium_hydroxide", + "sulfate", + "sulfur", + "sulfur_dioxide", + "sulfur_trioxide", + "sulfuric_acid", + "water" + ], + "ragium:chemical_type": [ + "compound", + "mixture", + "simple" + ], + "ragium:element": [ + "aluminum", + "calcium", + "carbon", + "chlorine", + "copper", + "fluorine", + "gold", + "hydrogen", + "iron", + "nitrogen", + "oxygen", + "potassium", + "silicon", + "sodium", + "sulfur" + ], + "ragium:fluid_result_type": [ + "potion", + "simple" + ], + "ragium:item_result_type": [ + "enchanted_book", + "simple", + "tag", + "with_fallback" + ], + "ragium:syncable_payload_type": [ + "fluid", + "integer", + "item" + ], + "ragium:widget_type": [ + "energy", + "fluid", + "item", + "progress" + ] +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/fluid/FluidInstanceBuilder.kt b/src/lib/kotlin/hiiragi283/lib/fluid/FluidInstanceBuilder.kt index 2eca74651..50b6c94cb 100644 --- a/src/lib/kotlin/hiiragi283/lib/fluid/FluidInstanceBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/fluid/FluidInstanceBuilder.kt @@ -4,7 +4,6 @@ package hiiragi283.lib.fluid import hiiragi283.lib.data.HolderAcceptor import hiiragi283.lib.data.buildDataPatch -import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.isEmpty import hiiragi283.lib.util.HTBuilderMarker import hiiragi283.lib.util.HTDelegates @@ -76,10 +75,6 @@ class FluidInstanceBuilder : HolderAcceptor.FluidAcceptor { fluid = this } - operator fun HTFluidContent.unaryPlus() { - +this.sourceHolder - } - operator fun DataComponentPatch.unaryPlus() { patch = this } From 27f37caa0cf56ef1f95dfe68e8c6fb3a5c1e4d51 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 28 Sep 2026 20:40:05 +0900 Subject: [PATCH 19/38] =?UTF-8?q?feat!:=20Circuit=20Chip=20=E3=81=AE?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E3=82=92=20Silicon=20Chip=20=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/lang/RagiumEnglishLangProvider.kt | 2 +- .../data/lang/RagiumJapaneseLangProvider.kt | 2 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 6 +++--- .../{circuit_chip.json => silicon_chip.json} | 2 +- .../resources/assets/ragium/lang/en_us.json | 2 +- .../resources/assets/ragium/lang/ja_jp.json | 2 +- .../item/{circuit_chip.json => silicon_chip.json} | 2 +- .../recipe/assembling/electric_circuit.json | 2 +- .../assembling/electronics_machine_parts.json | 2 +- .../{circuit_chip.json => silicon_chip.json} | 2 +- .../resources/reports/ragium/registries.json | 2 +- .../hiiragi283/ragium/common/item/RagiumItems.kt | 3 ++- .../assets/ragium/textures/item/cement.png | Bin 0 -> 343 bytes .../assets/ragium/textures/item/mortar.png | Bin 0 -> 367 bytes .../item/{circuit_chip.png => silicon_chip.png} | Bin 15 files changed, 15 insertions(+), 14 deletions(-) rename src/generated/resources/assets/ragium/items/{circuit_chip.json => silicon_chip.json} (56%) rename src/generated/resources/assets/ragium/models/item/{circuit_chip.json => silicon_chip.json} (60%) rename src/generated/resources/data/ragium/recipe/cutting/{circuit_chip.json => silicon_chip.json} (82%) create mode 100644 src/main/resources/assets/ragium/textures/item/cement.png create mode 100644 src/main/resources/assets/ragium/textures/item/mortar.png rename src/main/resources/assets/ragium/textures/item/{circuit_chip.png => silicon_chip.png} (100%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index c4c7bd438..683ae3496 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -140,7 +140,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") add(RagiumItems.CRUDE_SILICON, "Crude Silicon") add(RagiumItems.SILICON_WAFER, "Silicon Wafer") - add(RagiumItems.CIRCUIT_CHIP, "Circuit Chip") + add(RagiumItems.SILICON_CHIP, "Silicon Chip") add(RagiumItems.ELECTRIC_CIRCUIT, "Electric Circuit") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index ed0653782..04f8b603d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -136,7 +136,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.LINGERING_BOTTLE, "残留瓶") add(RagiumItems.CRUDE_SILICON, "粗製シリコン") add(RagiumItems.SILICON_WAFER, "シリコンウェハ") - add(RagiumItems.CIRCUIT_CHIP, "回路チップ") + add(RagiumItems.SILICON_CHIP, "シリコンチップ") add(RagiumItems.ELECTRIC_CIRCUIT, "電子回路") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 1d5a5effb..5181a7251 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -663,7 +663,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.cutting { ingredient { items { +RagiumItems.SILICON_WAFER } } result { - +RagiumItems.CIRCUIT_CHIP + +RagiumItems.SILICON_CHIP count = 8 } }.save(exporter) @@ -672,7 +672,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.assembling { ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } extra { - items { +RagiumItems.CIRCUIT_CHIP } + items { +RagiumItems.SILICON_CHIP } count = 2 } extra { @@ -696,7 +696,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu items { +RagiumItems.CFRP_PLATE } } extra { - items { +RagiumItems.CIRCUIT_CHIP } + items { +RagiumItems.SILICON_CHIP } count = 2 } extra { diff --git a/src/generated/resources/assets/ragium/items/circuit_chip.json b/src/generated/resources/assets/ragium/items/silicon_chip.json similarity index 56% rename from src/generated/resources/assets/ragium/items/circuit_chip.json rename to src/generated/resources/assets/ragium/items/silicon_chip.json index 2557a36f8..9052c3335 100644 --- a/src/generated/resources/assets/ragium/items/circuit_chip.json +++ b/src/generated/resources/assets/ragium/items/silicon_chip.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/circuit_chip" + "model": "ragium:item/silicon_chip" } } \ 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 f0e97cd0f..8f2c06724 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -215,7 +215,6 @@ "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", - "item.ragium.circuit_chip": "Circuit Chip", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_dust": "Coal Dust", "item.ragium.coal_tar_bucket": "Coal Tar Bucket", @@ -292,6 +291,7 @@ "item.ragium.resin_bucket": "Resin Bucket", "item.ragium.salt_dust": "Salt Dust", "item.ragium.salt_water_bucket": "Salt Water Bucket", + "item.ragium.silicon_chip": "Silicon Chip", "item.ragium.silicon_dust": "Silicon Dust", "item.ragium.silicon_wafer": "Silicon Wafer", "item.ragium.sodium_carbonate_dust": "Sodium Carbonate Dust", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 65ff63a4a..2c24d3c62 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -215,7 +215,6 @@ "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", - "item.ragium.circuit_chip": "回路チップ", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", "item.ragium.coal_tar_bucket": "石炭タール入りバケツ", @@ -292,6 +291,7 @@ "item.ragium.resin_bucket": "樹脂入りバケツ", "item.ragium.salt_dust": "食塩の粉", "item.ragium.salt_water_bucket": "塩水入りバケツ", + "item.ragium.silicon_chip": "シリコンチップ", "item.ragium.silicon_dust": "シリコンの粉", "item.ragium.silicon_wafer": "シリコンウェハ", "item.ragium.sodium_carbonate_dust": "炭酸ナトリウムの粉", diff --git a/src/generated/resources/assets/ragium/models/item/circuit_chip.json b/src/generated/resources/assets/ragium/models/item/silicon_chip.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/circuit_chip.json rename to src/generated/resources/assets/ragium/models/item/silicon_chip.json index 8dc75a31d..36798d0b2 100644 --- a/src/generated/resources/assets/ragium/models/item/circuit_chip.json +++ b/src/generated/resources/assets/ragium/models/item/silicon_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/circuit_chip" + "layer0": "ragium:item/silicon_chip" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json index 8789c0a1b..934dabde6 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit.json @@ -3,7 +3,7 @@ "extras": [ { "count": 2, - "items": "ragium:circuit_chip" + "items": "ragium:silicon_chip" }, { "count": 3, diff --git a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json index caf56f428..1ff1946a9 100644 --- a/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json +++ b/src/generated/resources/data/ragium/recipe/assembling/electronics_machine_parts.json @@ -3,7 +3,7 @@ "extras": [ { "count": 2, - "items": "ragium:circuit_chip" + "items": "ragium:silicon_chip" }, { "count": 3, diff --git a/src/generated/resources/data/ragium/recipe/cutting/circuit_chip.json b/src/generated/resources/data/ragium/recipe/cutting/silicon_chip.json similarity index 82% rename from src/generated/resources/data/ragium/recipe/cutting/circuit_chip.json rename to src/generated/resources/data/ragium/recipe/cutting/silicon_chip.json index e7cbe309c..11ff885c5 100644 --- a/src/generated/resources/data/ragium/recipe/cutting/circuit_chip.json +++ b/src/generated/resources/data/ragium/recipe/cutting/silicon_chip.json @@ -6,7 +6,7 @@ }, "result": { "count": 8, - "id": "ragium:circuit_chip" + "id": "ragium:silicon_chip" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 9989161f3..5c60e00ff 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -236,7 +236,6 @@ "chemical_machine_parts", "chemical_reactor", "chlorine_bucket", - "circuit_chip", "coal_coke", "coal_coke_block", "coal_dust", @@ -348,6 +347,7 @@ "salt_dust", "salt_water_bucket", "scanner", + "silicon_chip", "silicon_dust", "silicon_wafer", "smelter", diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 16f1bceb3..1684aec7a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -43,6 +43,7 @@ data object RagiumItems { REGISTER.addAlias("steel_nugget", "sooty_iron_nugget") REGISTER.addAlias("coal_coke_dust", "carbon_dust") REGISTER.addAlias("circuit_board", "cfrp_plate") + REGISTER.addAlias("circuit_chip", "silicon_chip") eventBus.addListener(::registerCapabilities) eventBus.addListener(::modifyDefaultComponents) @@ -191,7 +192,7 @@ data object RagiumItems { val SILICON_WAFER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("silicon_wafer") @JvmField - val CIRCUIT_CHIP: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_chip") + val SILICON_CHIP: HTSimpleDeferredItem = REGISTER.registerSimpleItem("silicon_chip") @JvmField val ELECTRIC_CIRCUIT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("electric_circuit") diff --git a/src/main/resources/assets/ragium/textures/item/cement.png b/src/main/resources/assets/ragium/textures/item/cement.png new file mode 100644 index 0000000000000000000000000000000000000000..951579a79332b63543999d9a5d0b772d513c115c GIT binary patch literal 343 zcmV-d0jU0oP)XX>~-rh91Vm#4U!1JfH7CD7+}e>KtQGlUKVijZ^EcRf-_Mw6VSuVD&!g#aJ=3#%k|zsI8-wRoq(K+ z(4rwMfPw=cjN#bJI3V)?wS!q05pIQh%pi5^awQJhynBvaX7T^ep3OiFs*(A p00960uedYB00006NkleJ0-ZO9VhT0li8g~mo+3etl4S{XQr6C!+-(= zfB+yOQUh>IJQ(Oh$R>2%9eoYlM8EtB00960U~L_F00006Nkl Date: Mon, 28 Sep 2026 20:58:42 +0900 Subject: [PATCH 20/38] =?UTF-8?q?feat:=20=E3=83=A2=E3=83=AB=E3=82=BF?= =?UTF-8?q?=E3=83=AB=E3=82=92=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=A6=E3=81=B2?= =?UTF-8?q?=E3=81=B3=E5=89=B2=E3=82=8C=E3=81=9F=E3=83=96=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E4=BF=AE=E5=BE=A9=E3=81=A7=E3=81=8D=E3=82=8B?= =?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/RagiumDataMapProvider.kt | 24 ++++++++++ .../ragium/data_maps/block/mortar_repair.json | 10 ++++ .../ragium/api/data/map/RagiumDataMaps.kt | 35 ++++++++++++++ .../ragium/common/item/HTMortarItem.kt | 46 +++++++++++++++++++ .../ragium/common/item/RagiumItems.kt | 2 +- 5 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 src/generated/resources/data/ragium/data_maps/block/mortar_repair.json create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt create mode 100644 src/main/kotlin/hiiragi283/ragium/common/item/HTMortarItem.kt diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataMapProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataMapProvider.kt index e64fa1b18..f053cf016 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataMapProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataMapProvider.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.data +import hiiragi283.ragium.api.data.map.RagiumDataMaps import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks @@ -8,6 +9,9 @@ import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.world.item.Item +import net.minecraft.world.level.block.Block +import net.minecraft.world.level.block.Blocks +import net.neoforged.neoforge.common.conditions.ICondition import net.neoforged.neoforge.common.data.DataMapProvider import net.neoforged.neoforge.registries.datamaps.builtin.FurnaceFuel import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps @@ -17,6 +21,8 @@ class RagiumDataMapProvider(packOutput: PackOutput, lookupProvider: CompletableF DataMapProvider(packOutput, lookupProvider) { override fun gather(provider: HolderLookup.Provider) { furnaceFuel() + + mortarRepair() } private fun furnaceFuel() { @@ -41,4 +47,22 @@ class RagiumDataMapProvider(packOutput: PackOutput, lookupProvider: CompletableF } } } + + private fun mortarRepair() { + builder(RagiumDataMaps.MORTAR_REPAIR) + .add(Blocks.CRACKED_DEEPSLATE_BRICKS, Blocks.DEEPSLATE_BRICKS) + .add(Blocks.CRACKED_DEEPSLATE_TILES, Blocks.DEEPSLATE_TILES) + .add(Blocks.CRACKED_NETHER_BRICKS, Blocks.NETHER_BRICKS) + .add(Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS, Blocks.POLISHED_BLACKSTONE_BRICKS) + .add(Blocks.CRACKED_STONE_BRICKS, Blocks.STONE_BRICKS) + .add(Blocks.INFESTED_CRACKED_STONE_BRICKS, Blocks.INFESTED_STONE_BRICKS) + } + + @Suppress("DEPRECATION") + private fun Builder.add( + block: Block, + value: T, + replace: Boolean = false, + conditions: List = listOf() + ): Builder = this.add(block.builtInRegistryHolder(), value, replace, *conditions.toTypedArray()) } diff --git a/src/generated/resources/data/ragium/data_maps/block/mortar_repair.json b/src/generated/resources/data/ragium/data_maps/block/mortar_repair.json new file mode 100644 index 000000000..d2c720025 --- /dev/null +++ b/src/generated/resources/data/ragium/data_maps/block/mortar_repair.json @@ -0,0 +1,10 @@ +{ + "values": { + "minecraft:cracked_deepslate_bricks": "minecraft:deepslate_bricks", + "minecraft:cracked_deepslate_tiles": "minecraft:deepslate_tiles", + "minecraft:cracked_nether_bricks": "minecraft:nether_bricks", + "minecraft:cracked_polished_blackstone_bricks": "minecraft:polished_blackstone_bricks", + "minecraft:cracked_stone_bricks": "minecraft:stone_bricks", + "minecraft:infested_cracked_stone_bricks": "minecraft:infested_stone_bricks" + } +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt new file mode 100644 index 000000000..ae8d819f6 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt @@ -0,0 +1,35 @@ +package hiiragi283.ragium.api.data.map + +import com.mojang.serialization.Codec +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.core.registries.BuiltInRegistries +import net.minecraft.core.registries.Registries +import net.minecraft.world.level.block.Block +import net.neoforged.bus.api.SubscribeEvent +import net.neoforged.fml.common.EventBusSubscriber +import net.neoforged.neoforge.registries.datamaps.DataMapType +import net.neoforged.neoforge.registries.datamaps.RegisterDataMapTypesEvent + +/** + * Ragiumで使用される[DataMapType]をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@EventBusSubscriber +data object RagiumDataMaps { + /** + * モルタルによるブロックの修復 + */ + @JvmField + val MORTAR_REPAIR: DataMapType = run { + val blockCodec: Codec = BuiltInRegistries.BLOCK.byNameCodec() + DataMapType.builder(RagiumAPI.id("mortar_repair"), Registries.BLOCK, blockCodec) + .synced(blockCodec, false) + .build() + } + + @SubscribeEvent + fun registerDataMapType(event: RegisterDataMapTypesEvent) { + event.register(MORTAR_REPAIR) + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTMortarItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTMortarItem.kt new file mode 100644 index 000000000..e146e75e6 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTMortarItem.kt @@ -0,0 +1,46 @@ +package hiiragi283.ragium.common.item + +import hiiragi283.ragium.api.data.map.RagiumDataMaps +import net.minecraft.advancements.CriteriaTriggers +import net.minecraft.core.BlockPos +import net.minecraft.server.level.ServerPlayer +import net.minecraft.sounds.SoundEvents +import net.minecraft.sounds.SoundSource +import net.minecraft.world.InteractionResult +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.context.UseOnContext +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.gameevent.GameEvent + +/** + * @see net.minecraft.world.item.HoneycombItem + */ +class HTMortarItem(properties: Properties) : Item(properties) { + companion object { + @JvmStatic + fun getRepaired(oldState: BlockState): BlockState? = oldState.typeHolder() + .getData(RagiumDataMaps.MORTAR_REPAIR) + ?.withPropertiesOf(oldState) + } + + override fun useOn(context: UseOnContext): InteractionResult { + val level: Level = context.level + val pos: BlockPos = context.clickedPos + val oldState: BlockState = level.getBlockState(pos) + return getRepaired(oldState)?.let { repairedState: BlockState -> + val player: Player? = context.player + val itemInHand: ItemStack = context.itemInHand + if (player is ServerPlayer) { + CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, pos, itemInHand) + } + itemInHand.shrink(1) + level.setBlock(pos, repairedState, 11) + level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, repairedState)) + level.playLocalSound(pos, SoundEvents.GRASS_PLACE, SoundSource.BLOCKS, 1f, 1f, false) + InteractionResult.SUCCESS + } ?: InteractionResult.PASS + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 1684aec7a..7a79b0d12 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -131,7 +131,7 @@ data object RagiumItems { val CEMENT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cement") @JvmField - val MORTAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("mortar") + val MORTAR: HTSimpleDeferredItem = REGISTER.registerItem("mortar", ::HTMortarItem) // Heat @JvmField From 8ee4eb34c8e2e21db41b570fb62e6a131da76762 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 18:53:37 +0900 Subject: [PATCH 21/38] =?UTF-8?q?refactor:=20Widger=20Renderer=20=E5=91=A8?= =?UTF-8?q?=E3=82=8A=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/widget/HTEnergySlotWidgetRenderer.kt | 4 +- .../gui/widget/HTFluidWidgetRenderer.kt | 60 ++++++++++++------- .../gui/widget/HTSpriteWidgetRenderer.kt | 24 +++----- .../ragium/api/util/HTStorageHelper.kt | 4 +- .../hiiragi283/lib/gui/HTGuiRenderHelper.kt | 53 +++++++++++----- 5 files changed, 84 insertions(+), 61 deletions(-) diff --git a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTEnergySlotWidgetRenderer.kt b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTEnergySlotWidgetRenderer.kt index bbba7918b..103a32a28 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTEnergySlotWidgetRenderer.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTEnergySlotWidgetRenderer.kt @@ -32,9 +32,7 @@ class HTEnergySlotWidgetRenderer(gui: HTGuiAccess, widget: HTEnergySlotWidget) : override fun shouldRender(): Boolean = !widget.isEmpty - override fun getSprite(): TextureAtlasSprite = getSprite(AtlasIds.BLOCKS, SPRITE) - - override fun getColor(): Int = -1 + override fun getSpriteAndColor(): Pair = getSprite(AtlasIds.BLOCKS, SPRITE) to -1 override fun getLevel(): Float = widget.filledLevel diff --git a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt index d91fe0c40..fae8ed785 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt @@ -3,40 +3,54 @@ package hiiragi283.ragium.client.gui.widget import hiiragi283.lib.gui.HTBounds import hiiragi283.lib.gui.HTGuiAccess import hiiragi283.lib.gui.HTGuiRenderHelper +import hiiragi283.lib.gui.widget.HTAbstractWidgetRenderer import hiiragi283.lib.text.Text import hiiragi283.lib.transfer.fluid.getFluidStack import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.client.util.HTSpriteRenderHelper import hiiragi283.ragium.common.gui.widget.HTFluidWidget +import net.minecraft.client.Minecraft import net.minecraft.client.gui.GuiGraphicsExtractor -import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.resources.Identifier -import net.minecraft.world.item.Item -import net.minecraft.world.item.TooltipFlag -import java.util.function.Consumer class HTFluidWidgetRenderer(gui: HTGuiAccess, widget: HTFluidWidget) : - HTSpriteWidgetRenderer(gui, widget) { - override fun renderBackground(bounds: HTBounds, graphics: GuiGraphicsExtractor) { - val texture: Identifier = when (widget) { + HTAbstractWidgetRenderer(gui, widget) { + override fun render( + bounds: HTBounds, + graphics: GuiGraphicsExtractor, + mouseX: Int, + mouseY: Int, + partialTick: Float + ) { + // Render background + val background: Identifier = when (widget) { is HTFluidWidget.Slot -> widget.backgroundType.slotTexture is HTFluidWidget.Tank -> widget.backgroundType.tankTexture } - HTSpriteRenderHelper.blit(graphics, texture, bounds) - } - - override fun shouldRender(): Boolean = !widget.isEmpty - - override fun getSprite(): TextureAtlasSprite? = HTGuiRenderHelper.getSprite(widget.resource) - - override fun getColor(): Int = HTGuiRenderHelper.getColor(widget.getFluidStack()) - - override fun getLevel(): Float = when (widget) { - is HTFluidWidget.Slot -> 1f - is HTFluidWidget.Tank -> widget.currentFilledLevel - }.coerceAtMost(1f) - - override fun collectTooltips(consumer: Consumer, context: Item.TooltipContext, flag: TooltipFlag) { - HTStorageHelper.addFluidTooltip(widget.getFluidStack(), consumer, context, null, flag, false) + HTSpriteRenderHelper.blit(graphics, background, bounds) + // Render sprite + var (x: Int, y: Int, width: Int, height: Int) = bounds + x++ + y++ + width -= 2 + height -= 2 + HTGuiRenderHelper.renderFluid(graphics, widget.getFluidStack(), x, y, width, height) + // Render tooltip + if (bounds.contains(mouseX, mouseY)) { + graphics.setTooltipForNextFrame( + Minecraft.getInstance().font, + buildList { + HTStorageHelper.addFluidTooltip( + widget.getFluidStack(), + { text: Text -> this.add(text.visualOrderText) }, + HTGuiRenderHelper.getTooltipContext(), + HTGuiRenderHelper.getTooltipFlag(), + false + ) + }, + mouseX, + mouseY + ) + } } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTSpriteWidgetRenderer.kt b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTSpriteWidgetRenderer.kt index 34190fceb..809eb8c32 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTSpriteWidgetRenderer.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTSpriteWidgetRenderer.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.client.gui.widget import hiiragi283.lib.gui.HTBounds import hiiragi283.lib.gui.HTGuiAccess +import hiiragi283.lib.gui.HTGuiRenderHelper import hiiragi283.lib.gui.widget.HTAbstractWidgetRenderer import hiiragi283.lib.gui.widget.HTWidget import hiiragi283.lib.text.Text @@ -15,7 +16,6 @@ import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling import net.minecraft.resources.Identifier import net.minecraft.world.item.Item import net.minecraft.world.item.TooltipFlag -import net.neoforged.neoforge.client.ClientTooltipFlag import java.util.function.Consumer abstract class HTSpriteWidgetRenderer(gui: HTGuiAccess, widget: WIDGET) : @@ -38,9 +38,11 @@ abstract class HTSpriteWidgetRenderer(gui: HTGuiAccess, widge graphics.setTooltipForNextFrame( font, buildList { - collectTooltips({ text: Text -> - this.add(text.visualOrderText) - }, Item.TooltipContext.EMPTY, getTooltipFlag()) + collectTooltips( + { text: Text -> this.add(text.visualOrderText) }, + HTGuiRenderHelper.getTooltipContext(), + HTGuiRenderHelper.getTooltipFlag() + ) }, mouseX, mouseY @@ -50,8 +52,7 @@ abstract class HTSpriteWidgetRenderer(gui: HTGuiAccess, widge private fun renderSprite(bounds: HTBounds, graphics: GuiGraphicsExtractor) { if (!shouldRender()) return - val sprite: TextureAtlasSprite = getSprite() ?: return - val color: Int = getColor() + val (sprite: TextureAtlasSprite, color: Int) = getSpriteAndColor() ?: return val fillLevel: Int = getScaledLevel().toInt() val spriteContents: SpriteContents = sprite.contents() @@ -81,18 +82,11 @@ abstract class HTSpriteWidgetRenderer(gui: HTGuiAccess, widge graphics.disableScissor() } - protected fun getTooltipFlag(): TooltipFlag = ClientTooltipFlag.of( - when (Minecraft.getInstance().options.advancedItemTooltips) { - true -> TooltipFlag.ADVANCED - false -> TooltipFlag.NORMAL - } - ) - protected abstract fun renderBackground(bounds: HTBounds, graphics: GuiGraphicsExtractor) protected abstract fun shouldRender(): Boolean - protected abstract fun getSprite(): TextureAtlasSprite? + protected abstract fun getSpriteAndColor(): Pair? protected fun getSprite(atlasId: Identifier, id: Identifier): TextureAtlasSprite = Minecraft .getInstance() @@ -100,8 +94,6 @@ abstract class HTSpriteWidgetRenderer(gui: HTGuiAccess, widge .getAtlasOrThrow(atlasId) .getSprite(id) - protected abstract fun getColor(): Int - protected open fun getScaledLevel(): Float = getLevel() * (widget.bounds.height - 2) protected abstract fun getLevel(): Float diff --git a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt index 452ca5fcf..6dd3b7af3 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt @@ -14,7 +14,6 @@ import hiiragi283.ragium.api.data.RagiumDataComponents import net.minecraft.ChatFormatting import net.minecraft.core.component.DataComponentPatch import net.minecraft.util.Mth -import net.minecraft.world.entity.player.Player import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag @@ -159,7 +158,6 @@ data object HTStorageHelper { stack: FluidStack, consumer: Consumer, context: Item.TooltipContext, - player: Player?, flag: TooltipFlag, isCreative: Boolean ) { @@ -175,7 +173,7 @@ data object HTStorageHelper { HTCommonTranslation.STORED_MB.translate(stack, stack.amount) }.let(consumer::accept) // Default Fluid Tooltips - val tooltips: MutableList = stack.getTooltipLines(context, player, flag) + val tooltips: MutableList = stack.getTooltipLines(context, context.player(), flag) tooltips.removeFirst() // remove fluid name tooltips.forEach(consumer) // Mod Name diff --git a/src/libClient/kotlin/hiiragi283/lib/gui/HTGuiRenderHelper.kt b/src/libClient/kotlin/hiiragi283/lib/gui/HTGuiRenderHelper.kt index 4a44c1bb7..35a62d4af 100644 --- a/src/libClient/kotlin/hiiragi283/lib/gui/HTGuiRenderHelper.kt +++ b/src/libClient/kotlin/hiiragi283/lib/gui/HTGuiRenderHelper.kt @@ -7,8 +7,9 @@ import net.minecraft.client.renderer.block.FluidModel import net.minecraft.client.renderer.texture.SpriteContents import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling -import net.minecraft.core.TypedInstance -import net.minecraft.world.level.material.Fluid +import net.minecraft.world.item.Item +import net.minecraft.world.item.TooltipFlag +import net.neoforged.neoforge.client.ClientTooltipFlag import net.neoforged.neoforge.fluids.FluidStack /** @@ -16,25 +17,26 @@ import net.neoforged.neoforge.fluids.FluidStack * @since 26.1.7 */ data object HTGuiRenderHelper { - @JvmStatic - fun getModel(instance: TypedInstance): FluidModel = Minecraft.getInstance() - .modelManager - .fluidStateModelSet - .get(instance.typeHolder().value().defaultFluidState()) - - @Suppress("RedundantNullableReturnType") - @JvmStatic - fun getSprite(instance: TypedInstance): TextureAtlasSprite? = getModel(instance) - .stillMaterial() - .sprite() + // Fluid // + /** + * @since 26.1.8 + */ + @Suppress("UNNECESSARY_SAFE_CALL") @JvmStatic - fun getColor(stack: FluidStack): Int = getModel(stack).fluidTintSource()?.colorAsStack(stack) ?: 0xffffffff.toInt() + fun getSpriteAndColor(stack: FluidStack): Pair? { + val model: FluidModel = Minecraft.getInstance() + .modelManager + .fluidStateModelSet + .get(stack.fluid.defaultFluidState()) + val color: Int = model.fluidTintSource()?.colorAsStack(stack) ?: 0xffffffff.toInt() + return model.stillMaterial().sprite()?.let { it to color } + } @JvmStatic fun renderFluid(graphics: GuiGraphicsExtractor, stack: FluidStack, x: Int, y: Int, width: Int, height: Int) { if (stack.isEmpty) return - getSprite(stack)?.let { sprite: TextureAtlasSprite -> + getSpriteAndColor(stack)?.let { (sprite: TextureAtlasSprite, color: Int) -> val spriteContents: SpriteContents = sprite.contents() val tileScaling = GuiSpriteScaling.Tile(spriteContents.width(), spriteContents.height()) @@ -52,9 +54,28 @@ data object HTGuiRenderHelper { tileScaling.height, tileScaling.width, tileScaling.height, - getColor(stack) + color ) graphics.disableScissor() } } + + // Tooltip // + + /** + * @since 26.1.8 + */ + fun getTooltipContext(): Item.TooltipContext = + Minecraft.getInstance().let { Item.TooltipContext.of(it.level, it.player) } + + /** + * @since 26.1.8 + */ + @JvmStatic + fun getTooltipFlag(): TooltipFlag = ClientTooltipFlag.of( + when (Minecraft.getInstance().options.advancedItemTooltips) { + true -> TooltipFlag.ADVANCED + false -> TooltipFlag.NORMAL + } + ) } From f01279d81bef66d16eea5ebc990efec216b54b79 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:02:02 +0900 Subject: [PATCH 22/38] =?UTF-8?q?refactor:=20HTStorageHelper=20=E3=82=92?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/api/util/HTStorageHelper.kt | 28 ++++++++++++++++--- .../storage/HTCreativeTankBlockEntity.kt | 13 ++------- .../storage/HTFluidOutputBusBlockEntity.kt | 10 ++----- .../entity/storage/HTPotionTankBlockEntity.kt | 10 ++----- .../block/entity/storage/HTTankBlockEntity.kt | 10 ++----- .../item/block/HTCreativeTankBlockItem.kt | 14 ++++------ 6 files changed, 42 insertions(+), 43 deletions(-) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt index 6dd3b7af3..a67d87847 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/util/HTStorageHelper.kt @@ -12,6 +12,8 @@ import hiiragi283.lib.transfer.energy.HTEnergyHandler import hiiragi283.lib.util.fixedFraction import hiiragi283.ragium.api.data.RagiumDataComponents import net.minecraft.ChatFormatting +import net.minecraft.core.component.DataComponentGetter +import net.minecraft.core.component.DataComponentMap import net.minecraft.core.component.DataComponentPatch import net.minecraft.util.Mth import net.minecraft.world.item.Item @@ -85,7 +87,7 @@ data object HTStorageHelper { } @JvmStatic - fun getEnergy(container: ItemStack): Int = container.getOrDefault(RagiumDataComponents.ENERGY, 0) + fun getEnergy(container: DataComponentGetter): Int = container.getOrDefault(RagiumDataComponents.ENERGY, 0) @JvmStatic fun updateEnergy(container: ItemStack, newAmount: Int) { @@ -96,6 +98,14 @@ data object HTStorageHelper { } } + /** + * @since 26.1.8 + */ + @JvmStatic + fun updateEnergy(container: DataComponentMap.Builder, newAmount: Int) { + container.set(RagiumDataComponents.ENERGY, newAmount.takeIf { it > 0 }) + } + @JvmStatic fun addEnergyTooltip(handler: HTEnergyHandler, consumer: Consumer, isCreative: Boolean) { // Empty name if amount is not positive @@ -141,7 +151,7 @@ data object HTStorageHelper { } @JvmStatic - fun getFluid(container: ItemStack): FluidStack = + fun getFluid(container: DataComponentGetter): FluidStack = container.getOrDefault(RagiumDataComponents.FLUID, SimpleFluidContent.EMPTY).copy() @JvmStatic @@ -153,6 +163,17 @@ data object HTStorageHelper { } } + /** + * @since 26.1.8 + */ + @JvmStatic + fun updateFluid(container: DataComponentMap.Builder, newStack: FluidStack) { + container.set( + RagiumDataComponents.FLUID, + newStack.takeUnless(FluidStack::isEmpty)?.let(SimpleFluidContent::copyOf) + ) + } + @JvmStatic fun addFluidTooltip( stack: FluidStack, @@ -195,8 +216,7 @@ data object HTStorageHelper { @JvmStatic private fun getFluidDurability(container: ItemStack): Double { - val bestRatio: Double = - HTFluidCapabilities.getSlot(ItemAccess.forStack(container), 0)?.currentFilledLevel?.toDouble() ?: 0.0 + val bestRatio: Double = HTFluidCapabilities.getSlot(container, 0)?.currentFilledLevel?.toDouble() ?: 0.0 return 1 - bestRatio } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt index 20b475604..92ecf209a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTCreativeTankBlockEntity.kt @@ -1,6 +1,6 @@ package hiiragi283.ragium.common.block.entity.storage -import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTCreativeFluidTank @@ -10,7 +10,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap import net.minecraft.world.level.block.state.BlockState -import net.neoforged.neoforge.fluids.SimpleFluidContent import net.neoforged.neoforge.transfer.fluid.FluidResource class HTCreativeTankBlockEntity(pos: BlockPos, state: BlockState) : @@ -26,17 +25,11 @@ class HTCreativeTankBlockEntity(pos: BlockPos, state: BlockState) : override fun applyImplicitComponents(components: DataComponentGetter) { super.applyImplicitComponents(components) - components.get(RagiumDataComponents.FLUID) - ?.copy() - ?.let(FluidResource::of) - ?.let(tank::resource::set) + tank.resource = HTStorageHelper.getFluid(components).let(FluidResource::of) } override fun collectImplicitComponents(components: DataComponentMap.Builder) { super.collectImplicitComponents(components) - val content: SimpleFluidContent = tank.resource.toStack(1).let(SimpleFluidContent::copyOf) - if (!content.isEmpty) { - components.set(RagiumDataComponents.FLUID, content) - } + HTStorageHelper.updateFluid(components, tank.resource.toStack(1)) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt index 00b1ba7ae..a7976a0ef 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTFluidOutputBusBlockEntity.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.common.block.entity.storage import hiiragi283.lib.transfer.fluid.HTBasicFluidTank import hiiragi283.ragium.api.RagiumConfig -import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank @@ -12,7 +12,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap import net.minecraft.world.level.block.state.BlockState -import net.neoforged.neoforge.fluids.SimpleFluidContent class HTFluidOutputBusBlockEntity(pos: BlockPos, state: BlockState) : HTBaseTankBlockEntity(RagiumBlockEntityTypes.FLUID_OUTPUT_BUS.get(), pos, state) { @@ -30,14 +29,11 @@ class HTFluidOutputBusBlockEntity(pos: BlockPos, state: BlockState) : override fun applyImplicitComponents(components: DataComponentGetter) { super.applyImplicitComponents(components) - components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + tank.setStack(HTStorageHelper.getFluid(components)) } override fun collectImplicitComponents(components: DataComponentMap.Builder) { super.collectImplicitComponents(components) - val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) - if (!content.isEmpty) { - components.set(RagiumDataComponents.FLUID, content) - } + HTStorageHelper.updateFluid(components, tank.getStackCopy()) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt index df1f17a37..7c3cffd23 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTPotionTankBlockEntity.kt @@ -3,7 +3,7 @@ package hiiragi283.ragium.common.block.entity.storage import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.transfer.fluid.HTBasicFluidTank import hiiragi283.ragium.api.RagiumConfig -import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank @@ -13,7 +13,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap import net.minecraft.world.level.block.state.BlockState -import net.neoforged.neoforge.fluids.SimpleFluidContent class HTPotionTankBlockEntity(pos: BlockPos, state: BlockState) : HTBaseTankBlockEntity(RagiumBlockEntityTypes.POTION_TANK.get(), pos, state) { @@ -35,14 +34,11 @@ class HTPotionTankBlockEntity(pos: BlockPos, state: BlockState) : override fun applyImplicitComponents(components: DataComponentGetter) { super.applyImplicitComponents(components) - components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + tank.setStack(HTStorageHelper.getFluid(components)) } override fun collectImplicitComponents(components: DataComponentMap.Builder) { super.collectImplicitComponents(components) - val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) - if (!content.isEmpty) { - components.set(RagiumDataComponents.FLUID, content) - } + HTStorageHelper.updateFluid(components, tank.getStackCopy()) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt index 729e0d30d..6daf32879 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/storage/HTTankBlockEntity.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.common.block.entity.storage import hiiragi283.lib.transfer.fluid.HTBasicFluidTank import hiiragi283.ragium.api.RagiumConfig -import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.storage.base.HTBaseTankBlockEntity import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank @@ -12,7 +12,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.component.DataComponentGetter import net.minecraft.core.component.DataComponentMap import net.minecraft.world.level.block.state.BlockState -import net.neoforged.neoforge.fluids.SimpleFluidContent class HTTankBlockEntity(pos: BlockPos, state: BlockState) : HTBaseTankBlockEntity(RagiumBlockEntityTypes.TANK.get(), pos, state) { @@ -30,14 +29,11 @@ class HTTankBlockEntity(pos: BlockPos, state: BlockState) : override fun applyImplicitComponents(components: DataComponentGetter) { super.applyImplicitComponents(components) - components.get(RagiumDataComponents.FLUID)?.copy()?.let(tank::setStack) + tank.setStack(HTStorageHelper.getFluid(components)) } override fun collectImplicitComponents(components: DataComponentMap.Builder) { super.collectImplicitComponents(components) - val content: SimpleFluidContent = tank.getStackCopy().let(SimpleFluidContent::copyOf) - if (!content.isEmpty) { - components.set(RagiumDataComponents.FLUID, content) - } + HTStorageHelper.updateFluid(components, tank.getStackCopy()) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt index 48a0dace9..4c15b6587 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/block/HTCreativeTankBlockItem.kt @@ -1,11 +1,10 @@ package hiiragi283.ragium.common.item.block -import hiiragi283.lib.data.buildDataPatch import hiiragi283.lib.fluid.FluidStack import hiiragi283.lib.fluid.HTFlowingFluidHelper import hiiragi283.lib.item.HTSubCreativeTabContents import hiiragi283.lib.registry.asHolderSequence -import hiiragi283.ragium.api.data.RagiumDataComponents +import hiiragi283.ragium.api.util.HTStorageHelper import net.minecraft.core.Holder import net.minecraft.core.registries.Registries import net.minecraft.world.item.BlockItem @@ -13,7 +12,6 @@ import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.level.block.Block -import net.neoforged.neoforge.fluids.SimpleFluidContent class HTCreativeTankBlockItem(block: Block, properties: Properties) : BlockItem(block, properties), @@ -28,11 +26,11 @@ class HTCreativeTankBlockItem(block: Block, properties: Properties) : .asHolderSequence() .forEach { fluid -> if (!HTFlowingFluidHelper.isSource(fluid)) return@forEach - val content: SimpleFluidContent = FluidStack(fluid).let(SimpleFluidContent::copyOf) - if (content.isEmpty) return@forEach - output.accept( - ItemStack(baseItem, 1, buildDataPatch { set(RagiumDataComponents.FLUID, content) }) - ) + val fluidStack = FluidStack(fluid) + if (fluidStack.isEmpty) return@forEach + val stack = ItemStack(baseItem) + HTStorageHelper.updateFluid(stack, fluidStack) + output.accept(stack) } } } From 9d0e1f9e6ce310ae1ad9d7323df79f940bda70b5 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:16:06 +0900 Subject: [PATCH 23/38] =?UTF-8?q?refactor:=20=E3=81=93=E3=82=8C=E3=81=84?= =?UTF-8?q?=E3=81=84=E3=81=AE=E3=81=8B=E3=81=AA=E3=81=81=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/data/HTDataComponentHelper.java | 35 +++++++++++++++++++ .../hiiragi283/lib/data/package-info.java | 4 +++ .../recipe/ingredient/HTIngredientHelper.kt | 5 +-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/lib/java/hiiragi283/lib/data/HTDataComponentHelper.java create mode 100644 src/lib/java/hiiragi283/lib/data/package-info.java diff --git a/src/lib/java/hiiragi283/lib/data/HTDataComponentHelper.java b/src/lib/java/hiiragi283/lib/data/HTDataComponentHelper.java new file mode 100644 index 000000000..d9020da2c --- /dev/null +++ b/src/lib/java/hiiragi283/lib/data/HTDataComponentHelper.java @@ -0,0 +1,35 @@ +package hiiragi283.lib.data; + +import net.minecraft.core.component.DataComponentGetter; +import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.component.TypedDataComponent; +import net.minecraft.core.registries.BuiltInRegistries; + +import java.util.List; +import java.util.function.Consumer; + +/// @author Hiiragi Tsubasa +/// @since 26.1.8 +public final class HTDataComponentHelper { + + /// Javaのガバガバジェネリクスを利用して[DataComponentGetter]を無理やり[DataComponentPatch]に変換します。 + /// + /// @param getter コンポーネントの提供元 + /// @return 無理やり作った[DataComponentPatch]のインスタンス + @SuppressWarnings({"rawtypes", "unchecked"}) + public static DataComponentPatch createPatch(DataComponentGetter getter) { + List> list = + BuiltInRegistries.DATA_COMPONENT_TYPE.stream() + .mapMulti( + (DataComponentType type, + Consumer> consumer) -> { + Object value = getter.get(type); + if (value != null) { + consumer.accept(new TypedDataComponent(type, value)); + } + }) + .toList(); + return DataComponentPatch.builder().set(list).build(); + } +} diff --git a/src/lib/java/hiiragi283/lib/data/package-info.java b/src/lib/java/hiiragi283/lib/data/package-info.java new file mode 100644 index 000000000..6b8598233 --- /dev/null +++ b/src/lib/java/hiiragi283/lib/data/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package hiiragi283.lib.data; + +import org.jspecify.annotations.NullMarked; diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTIngredientHelper.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTIngredientHelper.kt index 958b924cc..fb7453877 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTIngredientHelper.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTIngredientHelper.kt @@ -1,5 +1,6 @@ package hiiragi283.lib.recipe.ingredient +import hiiragi283.lib.data.HTDataComponentHelper import hiiragi283.lib.registry.isAir import hiiragi283.lib.registry.isEmpty import net.minecraft.core.TypedInstance @@ -25,7 +26,7 @@ data object HTIngredientHelper { fun unwrap(instance: FluidInstance): FluidStack = when (instance) { is FluidStack -> instance is FluidStackTemplate -> instance.create() - else -> FluidStack(instance.typeHolder(), instance.amount()) + else -> FluidStack(instance.typeHolder(), instance.amount(), HTDataComponentHelper.createPatch(instance)) } /** @@ -57,7 +58,7 @@ data object HTIngredientHelper { fun unwrap(instance: ItemInstance): ItemStack = when (instance) { is ItemStack -> instance is ItemStackTemplate -> instance.create() - else -> ItemStack(instance.typeHolder(), instance.count()) + else -> ItemStack(instance.typeHolder(), instance.count(), HTDataComponentHelper.createPatch(instance)) } /** From 55e87966f248b34399b8492481a002abf5e0380c Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:38:16 +0900 Subject: [PATCH 24/38] =?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=8CGypsum=20/=20?= =?UTF-8?q?=E7=9F=B3=E8=86=8F=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0=20feat:?= =?UTF-8?q?=20=E5=90=84=E7=A8=AE=E5=BB=BA=E6=9D=90=E3=83=96=E3=83=AD?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=81=AB=E5=A3=81=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 | 8 - .../data/lang/RagiumJapaneseLangProvider.kt | 8 - .../ragium/data/lang/RagiumLangProvider.kt | 5 + .../data/loot/RagiumBlockLootTableProvider.kt | 3 +- .../ragium/data/model/RagiumModelProvider.kt | 13 +- .../recipe/RagiumVanillaRecipeProvider.kt | 8 +- .../data/tag/RagiumBlockTagsProvider.kt | 18 +- .../ragium/data/tag/RagiumItemTagsProvider.kt | 11 +- .../ragium/blockstates/cryolite_wall.json | 90 ++++++++ .../ragium/blockstates/fluorite_wall.json | 90 ++++++++ .../assets/ragium/blockstates/gypsum.json | 7 + .../ragium/blockstates/gypsum_slab.json | 13 ++ .../ragium/blockstates/gypsum_stairs.json | 209 ++++++++++++++++++ .../ragium/blockstates/gypsum_wall.json | 90 ++++++++ .../assets/ragium/items/cryolite_wall.json | 6 + .../assets/ragium/items/fluorite_wall.json | 6 + .../resources/assets/ragium/items/gypsum.json | 6 + .../assets/ragium/items/gypsum_dust.json | 6 + .../assets/ragium/items/gypsum_slab.json | 6 + .../assets/ragium/items/gypsum_stairs.json | 6 + .../assets/ragium/items/gypsum_wall.json | 6 + .../resources/assets/ragium/lang/en_us.json | 7 + .../resources/assets/ragium/lang/ja_jp.json | 7 + .../models/block/cryolite_wall_inventory.json | 6 + .../models/block/cryolite_wall_post.json | 6 + .../models/block/cryolite_wall_side.json | 6 + .../models/block/cryolite_wall_side_tall.json | 6 + .../models/block/fluorite_wall_inventory.json | 6 + .../models/block/fluorite_wall_post.json | 6 + .../models/block/fluorite_wall_side.json | 6 + .../models/block/fluorite_wall_side_tall.json | 6 + .../assets/ragium/models/block/gypsum.json | 6 + .../ragium/models/block/gypsum_slab.json | 8 + .../ragium/models/block/gypsum_slab_top.json | 8 + .../ragium/models/block/gypsum_stairs.json | 8 + .../models/block/gypsum_stairs_inner.json | 8 + .../models/block/gypsum_stairs_outer.json | 8 + .../models/block/gypsum_wall_inventory.json | 6 + .../ragium/models/block/gypsum_wall_post.json | 6 + .../ragium/models/block/gypsum_wall_side.json | 6 + .../models/block/gypsum_wall_side_tall.json | 6 + .../ragium/models/item/gypsum_dust.json | 6 + .../resources/data/c/tags/item/dusts.json | 1 + .../data/c/tags/item/dusts/gypsum.json | 5 + .../tags/block/mineable/pickaxe.json | 6 + .../data/minecraft/tags/block/slabs.json | 3 +- .../data/minecraft/tags/block/stairs.json | 3 +- .../data/minecraft/tags/block/walls.json | 7 + .../data/minecraft/tags/item/slabs.json | 3 +- .../data/minecraft/tags/item/stairs.json | 3 +- .../data/minecraft/tags/item/walls.json | 7 + .../loot_table/blocks/cryolite_wall.json | 21 ++ .../loot_table/blocks/fluorite_wall.json | 21 ++ .../data/ragium/loot_table/blocks/gypsum.json | 21 ++ .../ragium/loot_table/blocks/gypsum_slab.json | 35 +++ .../loot_table/blocks/gypsum_stairs.json | 21 ++ .../ragium/loot_table/blocks/gypsum_wall.json | 21 ++ .../ragium/recipe/shaped/cryolite_wall.json | 16 ++ .../ragium/recipe/shaped/fluorite_wall.json | 16 ++ .../ragium/recipe/shaped/gypsum_slab.json | 15 ++ .../ragium/recipe/shaped/gypsum_stairs.json | 17 ++ .../ragium/recipe/shaped/gypsum_wall.json | 16 ++ .../recipe/stonecutting/cryolite_wall.json | 7 + .../recipe/stonecutting/fluorite_wall.json | 7 + .../recipe/stonecutting/gypsum_slab.json | 8 + .../recipe/stonecutting/gypsum_stairs.json | 7 + .../recipe/stonecutting/gypsum_wall.json | 7 + .../resources/reports/ragium/registries.json | 13 ++ .../lib/data/lang/HTLangProvider.kt | 22 ++ .../lib/data/model/HTModelProvider.kt | 67 ++++-- .../lib/data/recipe/HTRecipeProvider.kt | 82 ++++--- .../lib/registry/HTDecorationContent.kt | 60 +++++ .../ragium/api/material/RagiumMaterial.kt | 5 + .../ragium/common/block/RagiumBlocks.kt | 53 +++-- .../assets/ragium/textures/block/gypsum.png | Bin 0 -> 475 bytes .../assets/ragium/textures/item/cement.png | Bin 343 -> 350 bytes .../ragium/textures/item/gypsum_dust.png | Bin 0 -> 343 bytes .../assets/ragium/textures/item/lime_dust.png | Bin 334 -> 334 bytes .../assets/ragium/textures/item/mortar.png | Bin 367 -> 359 bytes 79 files changed, 1216 insertions(+), 133 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/cryolite_wall.json create mode 100644 src/generated/resources/assets/ragium/blockstates/fluorite_wall.json create mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum.json create mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_wall.json create mode 100644 src/generated/resources/assets/ragium/items/cryolite_wall.json create mode 100644 src/generated/resources/assets/ragium/items/fluorite_wall.json create mode 100644 src/generated/resources/assets/ragium/items/gypsum.json create mode 100644 src/generated/resources/assets/ragium/items/gypsum_dust.json create mode 100644 src/generated/resources/assets/ragium/items/gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/items/gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/items/gypsum_wall.json create mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json create mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json create mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json create mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json create mode 100644 src/generated/resources/assets/ragium/models/block/fluorite_wall_inventory.json create mode 100644 src/generated/resources/assets/ragium/models/block/fluorite_wall_post.json create mode 100644 src/generated/resources/assets/ragium/models/block/fluorite_wall_side.json create mode 100644 src/generated/resources/assets/ragium/models/block/fluorite_wall_side_tall.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json create mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json create mode 100644 src/generated/resources/assets/ragium/models/item/gypsum_dust.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/gypsum.json create mode 100644 src/generated/resources/data/minecraft/tags/block/walls.json create mode 100644 src/generated/resources/data/minecraft/tags/item/walls.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/fluorite_wall.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/fluorite_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/fluorite_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json create mode 100644 src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt create mode 100644 src/main/resources/assets/ragium/textures/block/gypsum.png create mode 100644 src/main/resources/assets/ragium/textures/item/gypsum_dust.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 683ae3496..38fb95777 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -39,14 +39,6 @@ class RagiumEnglishLangProvider(output: PackOutput) : addAdvancement(RagiumAdvancementKeys.FREEZER, "My power is 530,000.", "Acquire Freezer") addAdvancement(RagiumAdvancementKeys.MELTER, "(S)melter(y)", "Acquire Melter") // Block - add(RagiumBlocks.ECHO_BLOCK, "Block of Echo") - - add(RagiumBlocks.FLUORITE_SLAB, "Fluorite Slab") - add(RagiumBlocks.FLUORITE_STAIRS, "Fluorite Stairs") - - add(RagiumBlocks.CRYOLITE_SLAB, "Cryolite Slab") - add(RagiumBlocks.CRYOLITE_STAIRS, "Cryolite Stairs") - add(RagiumBlocks.ASSEMBLER, "Assembler") add(RagiumBlocks.CRUSHER, "Crusher") add(RagiumBlocks.COMPRESSOR, "Compressor") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 04f8b603d..d183bdba7 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -35,14 +35,6 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addAdvancement(RagiumAdvancementKeys.FREEZER, "私の消費電力は53万です", "冷凍機を手に入れる") addAdvancement(RagiumAdvancementKeys.MELTER, "融けてしまいそう", "溶融炉を手に入れる") // Block - add(RagiumBlocks.ECHO_BLOCK, "残響ブロック") - - add(RagiumBlocks.FLUORITE_SLAB, "蛍石のハーフブロック") - add(RagiumBlocks.FLUORITE_STAIRS, "蛍石の階段") - - add(RagiumBlocks.CRYOLITE_SLAB, "氷晶石のハーフブロック") - add(RagiumBlocks.CRYOLITE_STAIRS, "氷晶石の階段") - add(RagiumBlocks.ASSEMBLER, "組立機") add(RagiumBlocks.CRUSHER, "破砕機") add(RagiumBlocks.COMPRESSOR, "圧縮機") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 8c4c94c01..3203882b0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -27,8 +27,13 @@ interface RagiumLangProvider { .forEach { (part: HTBlockPart, material: RagiumMaterial, block: HTHasTranslationKey) -> provider.add(block, part, material) } + provider.add(RagiumBlocks.ECHO_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.ECHO) provider.add(RagiumBlocks.FLUORITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.FLUORITE) + provider.addDecoration(RagiumBlocks.FLUORITE_DECORATION, RagiumMaterial.Gem.FLUORITE) provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) + provider.addDecoration(RagiumBlocks.CRYOLITE_DECORATION, RagiumMaterial.Gem.CRYOLITE) + provider.add(RagiumBlocks.GYPSUM, RagiumMaterial.Mineral.GYPSUM) + provider.addDecoration(RagiumBlocks.GYPSUM_DECORATION, RagiumMaterial.Mineral.GYPSUM) val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index fe25dd5c7..fce0d77b3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt @@ -36,8 +36,7 @@ class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : RagiumBlocks.STORAGE_BLOCKS.values.forEach(::dropSelf) - add(RagiumBlocks.FLUORITE_SLAB, ::createSlabItemTable) - add(RagiumBlocks.CRYOLITE_SLAB, ::createSlabItemTable) + RagiumBlocks.ALL_DECORATIONS.forEach { add(it.slab, ::createSlabItemTable) } // Machine for (machine: HTSimpleDeferredBlockAndItem in RagiumBlocks.MACHINES.values.flatten()) { add(machine, ::copyComponent) diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 3fcfe8ea2..e5b003c60 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -68,19 +68,16 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP yield(RagiumBlocks.ECHO_BLOCK) yield(RagiumBlocks.FLUORITE_BLOCK) yield(RagiumBlocks.CRYOLITE_BLOCK) + yield(RagiumBlocks.GYPSUM) yield(RagiumBlocks.CREATIVE_BATTERY) // TODO yield(RagiumBlocks.MACHINE_CASING) }.forEach { generators.createTrivialCube(it.getOrThrow()) } - // Slab - generators.createSlab(RagiumBlocks.FLUORITE_SLAB, RagiumBlocks.FLUORITE_BLOCK) - generators.createSlab(RagiumBlocks.CRYOLITE_SLAB, RagiumBlocks.CRYOLITE_BLOCK) - - // Stairs - generators.createStairs(RagiumBlocks.FLUORITE_STAIRS, RagiumBlocks.FLUORITE_BLOCK) - generators.createStairs(RagiumBlocks.CRYOLITE_STAIRS, RagiumBlocks.CRYOLITE_BLOCK) + generators.createDecoration(RagiumBlocks.FLUORITE_DECORATION) + generators.createDecoration(RagiumBlocks.CRYOLITE_DECORATION) + generators.createDecoration(RagiumBlocks.GYPSUM_DECORATION) // Machine val inactiveModels: Map = HTMachineType.entries @@ -114,7 +111,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } // Decoration for ((machineType: HTMachineType, block: HTSimpleDeferredBlockAndItem) in RagiumBlocks.MACHINE_CASINGS) { - generators.createSimple(block.getOrThrow(), ModelTemplates.CUBE_TOP, textureMapping(machineType)) + generators.createSimple(block, ModelTemplates.CUBE_TOP, textureMapping(machineType)) } // Bus generators.createTrivialBlock(RagiumBlocks.FLUID_OUTPUT_BUS.getOrThrow(), TexturedModel.CUBE_TOP_BOTTOM) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 585f4a4e9..c7d065591 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -473,14 +473,10 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private fun material() { // XX <-> Storage Block gemBlock(RagiumMaterial.Gem.ECHO, RagiumBlocks.ECHO_BLOCK) - gemBlock(RagiumMaterial.Gem.FLUORITE, RagiumBlocks.FLUORITE_BLOCK) - registerSlabRecipes(RagiumBlocks.FLUORITE_SLAB, Ingredient.of(RagiumBlocks.FLUORITE_BLOCK)) - registerStairsRecipes(RagiumBlocks.FLUORITE_STAIRS, Ingredient.of(RagiumBlocks.FLUORITE_BLOCK)) - gemBlock(RagiumMaterial.Gem.CRYOLITE, RagiumBlocks.CRYOLITE_BLOCK) - registerSlabRecipes(RagiumBlocks.CRYOLITE_SLAB, Ingredient.of(RagiumBlocks.CRYOLITE_BLOCK)) - registerStairsRecipes(RagiumBlocks.CRYOLITE_STAIRS, Ingredient.of(RagiumBlocks.CRYOLITE_BLOCK)) + + RagiumBlocks.ALL_DECORATIONS.forEach(::registerDecoration) nineToBlock(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT) nineToBlock(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index fa535efa3..2d4d4a6fa 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -26,12 +26,7 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yieldAll(RagiumBlocks.MATERIAL_ORES.values) yieldAll(RagiumBlocks.STORAGE_BLOCKS.values) yield(RagiumBlocks.ECHO_BLOCK) - yield(RagiumBlocks.FLUORITE_BLOCK) - yield(RagiumBlocks.FLUORITE_SLAB) - yield(RagiumBlocks.FLUORITE_STAIRS) - yield(RagiumBlocks.CRYOLITE_BLOCK) - yield(RagiumBlocks.CRYOLITE_SLAB) - yield(RagiumBlocks.CRYOLITE_STAIRS) + yieldAll(RagiumBlocks.ALL_DECORATIONS.flatMap { it.all }) yieldAll(RagiumBlocks.MACHINES.values.flatten()) yield(RagiumBlocks.MACHINE_CASING) @@ -43,11 +38,10 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yield(RagiumBlocks.CREATIVE_BATTERY) }.forEach(pickaxe::add) // Other - builder(BlockTags.SLABS) - .add(RagiumBlocks.FLUORITE_SLAB) - .add(RagiumBlocks.CRYOLITE_SLAB) - builder(BlockTags.STAIRS) - .add(RagiumBlocks.FLUORITE_STAIRS) - .add(RagiumBlocks.CRYOLITE_STAIRS) + for ((_, slab, stairs, wall) in RagiumBlocks.ALL_DECORATIONS) { + builder(BlockTags.SLABS).add(slab) + stairs?.let(builder(BlockTags.STAIRS)::add) + wall?.let(builder(BlockTags.WALLS)::add) + } } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 18623b177..dfb9be62b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -55,12 +55,11 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(RagiumTags.Items.SOOTY_IRON_TOOL_MATERIALS) .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Alloy.SOOTY_IRON)) // Other - builder(ItemTags.SLABS) - .add(RagiumBlocks.FLUORITE_SLAB) - .add(RagiumBlocks.CRYOLITE_SLAB) - builder(ItemTags.STAIRS) - .add(RagiumBlocks.FLUORITE_STAIRS) - .add(RagiumBlocks.CRYOLITE_STAIRS) + for ((_, slab, stairs, wall) in RagiumBlocks.ALL_DECORATIONS) { + builder(ItemTags.SLABS).add(slab) + stairs?.let { builder(ItemTags.STAIRS).add(it) } + wall?.let { builder(ItemTags.WALLS).add(it) } + } builder(ItemTags.PLANKS).add(RagiumItems.PARTICLE_BOARD) diff --git a/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json b/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json new file mode 100644 index 000000000..885f743ed --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "ragium:block/cryolite_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "ragium:block/cryolite_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/fluorite_wall.json b/src/generated/resources/assets/ragium/blockstates/fluorite_wall.json new file mode 100644 index 000000000..815c4c55f --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/fluorite_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "ragium:block/fluorite_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "ragium:block/fluorite_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum.json b/src/generated/resources/assets/ragium/blockstates/gypsum.json new file mode 100644 index 000000000..f5ca2be3c --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/gypsum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/gypsum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json b/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json new file mode 100644 index 000000000..1c6dd22a9 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "ragium:block/gypsum_slab" + }, + "type=double": { + "model": "ragium:block/gypsum" + }, + "type=top": { + "model": "ragium:block/gypsum_slab_top" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json b/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json new file mode 100644 index 000000000..f6b942882 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "ragium:block/gypsum_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "ragium:block/gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "ragium:block/gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "ragium:block/gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json b/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json new file mode 100644 index 000000000..8343904a7 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "ragium:block/gypsum_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "ragium:block/gypsum_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_wall.json b/src/generated/resources/assets/ragium/items/cryolite_wall.json new file mode 100644 index 000000000..0de1e5f7c --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cryolite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/cryolite_wall_inventory" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/fluorite_wall.json b/src/generated/resources/assets/ragium/items/fluorite_wall.json new file mode 100644 index 000000000..282562066 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/fluorite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/fluorite_wall_inventory" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum.json b/src/generated/resources/assets/ragium/items/gypsum.json new file mode 100644 index 000000000..dc23b7f86 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/gypsum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_dust.json b/src/generated/resources/assets/ragium/items/gypsum_dust.json new file mode 100644 index 000000000..ded27915c --- /dev/null +++ b/src/generated/resources/assets/ragium/items/gypsum_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/gypsum_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_slab.json b/src/generated/resources/assets/ragium/items/gypsum_slab.json new file mode 100644 index 000000000..e8a0048d7 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/gypsum_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_stairs.json b/src/generated/resources/assets/ragium/items/gypsum_stairs.json new file mode 100644 index 000000000..9d2d413eb --- /dev/null +++ b/src/generated/resources/assets/ragium/items/gypsum_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_wall.json b/src/generated/resources/assets/ragium/items/gypsum_wall.json new file mode 100644 index 000000000..8ac8c58c4 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/gypsum_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/gypsum_wall_inventory" + } +} \ 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 8f2c06724..2286e7a82 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -46,6 +46,7 @@ "block.ragium.cryolite_block": "Block of Cryolite", "block.ragium.cryolite_slab": "Cryolite Slab", "block.ragium.cryolite_stairs": "Cryolite Stairs", + "block.ragium.cryolite_wall": "Cryolite Wall", "block.ragium.cutting_machine": "Cutting Machine", "block.ragium.cyan_dye": "Cyan Dye", "block.ragium.deepslate_niter_ore": "Deepslate Niter Ore", @@ -58,10 +59,15 @@ "block.ragium.fluorite_block": "Block of Fluorite", "block.ragium.fluorite_slab": "Fluorite Slab", "block.ragium.fluorite_stairs": "Fluorite Stairs", + "block.ragium.fluorite_wall": "Fluorite Wall", "block.ragium.freezer": "Freezer", "block.ragium.fuel": "Fuel", "block.ragium.gray_dye": "Gray Dye", "block.ragium.green_dye": "Green Dye", + "block.ragium.gypsum": "Gypsum", + "block.ragium.gypsum_slab": "Gypsum Slab", + "block.ragium.gypsum_stairs": "Gypsum Stairs", + "block.ragium.gypsum_wall": "Gypsum Wall", "block.ragium.heat_machine_casing": "Machine Casing (Heat)", "block.ragium.honey": "Honey", "block.ragium.hydrochloric_acid": "Hydrochloric Acid", @@ -241,6 +247,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.gypsum_dust": "Gypsum Dust", "item.ragium.heat_machine_parts": "Machine Parts (Heat)", "item.ragium.honey_bucket": "Honey Bucket", "item.ragium.hydrochloric_acid_bucket": "Hydrochloric Acid Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 2c24d3c62..58eab44ea 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -46,6 +46,7 @@ "block.ragium.cryolite_block": "氷晶石ブロック", "block.ragium.cryolite_slab": "氷晶石のハーフブロック", "block.ragium.cryolite_stairs": "氷晶石の階段", + "block.ragium.cryolite_wall": "氷晶石の壁", "block.ragium.cutting_machine": "裁断機", "block.ragium.cyan_dye": "青緑色の染料", "block.ragium.deepslate_niter_ore": "深層硝石鉱石", @@ -58,10 +59,15 @@ "block.ragium.fluorite_block": "蛍石ブロック", "block.ragium.fluorite_slab": "蛍石のハーフブロック", "block.ragium.fluorite_stairs": "蛍石の階段", + "block.ragium.fluorite_wall": "蛍石の壁", "block.ragium.freezer": "冷凍機", "block.ragium.fuel": "燃料油", "block.ragium.gray_dye": "灰色の染料", "block.ragium.green_dye": "緑色の染料", + "block.ragium.gypsum": "石膏", + "block.ragium.gypsum_slab": "石膏のハーフブロック", + "block.ragium.gypsum_stairs": "石膏の階段", + "block.ragium.gypsum_wall": "石膏の壁", "block.ragium.heat_machine_casing": "機械筐体 (熱)", "block.ragium.honey": "ハチミツ", "block.ragium.hydrochloric_acid": "塩酸", @@ -241,6 +247,7 @@ "item.ragium.gold_gear": "金の歯車", "item.ragium.gray_dye_bucket": "灰色の染料入りバケツ", "item.ragium.green_dye_bucket": "緑色の染料入りバケツ", + "item.ragium.gypsum_dust": "石膏の粉", "item.ragium.heat_machine_parts": "機械部品 (熱)", "item.ragium.honey_bucket": "ハチミツ入りバケツ", "item.ragium.hydrochloric_acid_bucket": "塩酸入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json new file mode 100644 index 000000000..ff38709f6 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "ragium:block/cryolite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json new file mode 100644 index 000000000..f7d0f36fa --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "ragium:block/cryolite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json new file mode 100644 index 000000000..62b3ae052 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "ragium:block/cryolite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json new file mode 100644 index 000000000..04265c2d9 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "ragium:block/cryolite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/fluorite_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/fluorite_wall_inventory.json new file mode 100644 index 000000000..d897b511f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluorite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "ragium:block/fluorite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/fluorite_wall_post.json b/src/generated/resources/assets/ragium/models/block/fluorite_wall_post.json new file mode 100644 index 000000000..a442ef8bf --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluorite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "ragium:block/fluorite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/fluorite_wall_side.json b/src/generated/resources/assets/ragium/models/block/fluorite_wall_side.json new file mode 100644 index 000000000..61f09f73f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluorite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "ragium:block/fluorite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/fluorite_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/fluorite_wall_side_tall.json new file mode 100644 index 000000000..69ea3d8fc --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/fluorite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "ragium:block/fluorite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum.json b/src/generated/resources/assets/ragium/models/block/gypsum.json new file mode 100644 index 000000000..2734fdec1 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_slab.json b/src/generated/resources/assets/ragium/models/block/gypsum_slab.json new file mode 100644 index 000000000..e5caf6a06 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "ragium:block/gypsum", + "side": "ragium:block/gypsum", + "top": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json b/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json new file mode 100644 index 000000000..5ed64e26e --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "ragium:block/gypsum", + "side": "ragium:block/gypsum", + "top": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json new file mode 100644 index 000000000..137979c75 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "ragium:block/gypsum", + "side": "ragium:block/gypsum", + "top": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json new file mode 100644 index 000000000..c2946ed86 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "ragium:block/gypsum", + "side": "ragium:block/gypsum", + "top": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json new file mode 100644 index 000000000..8f2018675 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "ragium:block/gypsum", + "side": "ragium:block/gypsum", + "top": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json new file mode 100644 index 000000000..121dbd9fc --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json new file mode 100644 index 000000000..f5c23751f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json new file mode 100644 index 000000000..d0b60066f --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json new file mode 100644 index 000000000..f5e2c3230 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "ragium:block/gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/gypsum_dust.json b/src/generated/resources/assets/ragium/models/item/gypsum_dust.json new file mode 100644 index 000000000..0bf6988c5 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/gypsum_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/gypsum_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index 1bb08bb6d..6b2df3d9e 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -15,6 +15,7 @@ "#c:dusts/fluorite", "#c:dusts/glass", "#c:dusts/gold", + "#c:dusts/gypsum", "#c:dusts/iron", "#c:dusts/lapis", "#c:dusts/lime", diff --git a/src/generated/resources/data/c/tags/item/dusts/gypsum.json b/src/generated/resources/data/c/tags/item/dusts/gypsum.json new file mode 100644 index 000000000..04efd89a4 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/gypsum.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:gypsum_dust" + ] +} \ 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 5cf13e2bd..6efb5b949 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -19,6 +19,7 @@ "ragium:cryolite_block", "ragium:cryolite_slab", "ragium:cryolite_stairs", + "ragium:cryolite_wall", "ragium:cutting_machine", "ragium:deepslate_niter_ore", "ragium:deepslate_sulfur_ore", @@ -30,7 +31,12 @@ "ragium:fluorite_block", "ragium:fluorite_slab", "ragium:fluorite_stairs", + "ragium:fluorite_wall", "ragium:freezer", + "ragium:gypsum", + "ragium:gypsum_slab", + "ragium:gypsum_stairs", + "ragium:gypsum_wall", "ragium:heat_machine_casing", "ragium:machine_casing", "ragium:mechanical_machine_casing", diff --git a/src/generated/resources/data/minecraft/tags/block/slabs.json b/src/generated/resources/data/minecraft/tags/block/slabs.json index 189401999..c72eb2f6b 100644 --- a/src/generated/resources/data/minecraft/tags/block/slabs.json +++ b/src/generated/resources/data/minecraft/tags/block/slabs.json @@ -1,6 +1,7 @@ { "values": [ "ragium:cryolite_slab", - "ragium:fluorite_slab" + "ragium:fluorite_slab", + "ragium:gypsum_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/stairs.json b/src/generated/resources/data/minecraft/tags/block/stairs.json index fe730d506..2de720d94 100644 --- a/src/generated/resources/data/minecraft/tags/block/stairs.json +++ b/src/generated/resources/data/minecraft/tags/block/stairs.json @@ -1,6 +1,7 @@ { "values": [ "ragium:cryolite_stairs", - "ragium:fluorite_stairs" + "ragium:fluorite_stairs", + "ragium:gypsum_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/walls.json b/src/generated/resources/data/minecraft/tags/block/walls.json new file mode 100644 index 000000000..b7547c2dd --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/walls.json @@ -0,0 +1,7 @@ +{ + "values": [ + "ragium:cryolite_wall", + "ragium:fluorite_wall", + "ragium:gypsum_wall" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/slabs.json b/src/generated/resources/data/minecraft/tags/item/slabs.json index 189401999..c72eb2f6b 100644 --- a/src/generated/resources/data/minecraft/tags/item/slabs.json +++ b/src/generated/resources/data/minecraft/tags/item/slabs.json @@ -1,6 +1,7 @@ { "values": [ "ragium:cryolite_slab", - "ragium:fluorite_slab" + "ragium:fluorite_slab", + "ragium:gypsum_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/stairs.json b/src/generated/resources/data/minecraft/tags/item/stairs.json index fe730d506..2de720d94 100644 --- a/src/generated/resources/data/minecraft/tags/item/stairs.json +++ b/src/generated/resources/data/minecraft/tags/item/stairs.json @@ -1,6 +1,7 @@ { "values": [ "ragium:cryolite_stairs", - "ragium:fluorite_stairs" + "ragium:fluorite_stairs", + "ragium:gypsum_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/walls.json b/src/generated/resources/data/minecraft/tags/item/walls.json new file mode 100644 index 000000000..b7547c2dd --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/item/walls.json @@ -0,0 +1,7 @@ +{ + "values": [ + "ragium:cryolite_wall", + "ragium:fluorite_wall", + "ragium:gypsum_wall" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json new file mode 100644 index 000000000..a5b97fcbc --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:cryolite_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/cryolite_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/fluorite_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/fluorite_wall.json new file mode 100644 index 000000000..bfc860751 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/fluorite_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:fluorite_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/fluorite_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json new file mode 100644 index 000000000..6601b4dec --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:gypsum" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/gypsum" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json new file mode 100644 index 000000000..b0d1836af --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "ragium:gypsum_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "ragium:gypsum_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/gypsum_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json new file mode 100644 index 000000000..796d0f678 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:gypsum_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/gypsum_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json new file mode 100644 index 000000000..81b8fd3b3 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:gypsum_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/gypsum_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json b/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json new file mode 100644 index 000000000..fbd1c0470 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "cryolite_wall", + "key": { + "A": "ragium:cryolite_block" + }, + "pattern": [ + "AAA", + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:cryolite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/fluorite_wall.json b/src/generated/resources/data/ragium/recipe/shaped/fluorite_wall.json new file mode 100644 index 000000000..3889352aa --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/fluorite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "fluorite_wall", + "key": { + "A": "ragium:fluorite_block" + }, + "pattern": [ + "AAA", + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:fluorite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json new file mode 100644 index 000000000..f94f85706 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "gypsum_slab", + "key": { + "A": "ragium:gypsum" + }, + "pattern": [ + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json new file mode 100644 index 000000000..ee54d9589 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "gypsum_stairs", + "key": { + "A": "ragium:gypsum" + }, + "pattern": [ + "A ", + "AA ", + "AAA" + ], + "result": { + "count": 4, + "id": "ragium:gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json new file mode 100644 index 000000000..b67d5cc7a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "gypsum_wall", + "key": { + "A": "ragium:gypsum" + }, + "pattern": [ + "AAA", + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:gypsum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json new file mode 100644 index 000000000..baa7c76fe --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:cryolite_block", + "result": { + "id": "ragium:cryolite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/fluorite_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/fluorite_wall.json new file mode 100644 index 000000000..cb34f744e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/fluorite_wall.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:fluorite_block", + "result": { + "id": "ragium:fluorite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json new file mode 100644 index 000000000..931d7b26e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:gypsum", + "result": { + "count": 2, + "id": "ragium:gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json new file mode 100644 index 000000000..e68e6ae7c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:gypsum", + "result": { + "id": "ragium:gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json new file mode 100644 index 000000000..dedd70e5a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "ragium:gypsum", + "result": { + "id": "ragium:gypsum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 5c60e00ff..a7981b077 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -24,6 +24,7 @@ "cryolite_block", "cryolite_slab", "cryolite_stairs", + "cryolite_wall", "cutting_machine", "cyan_dye", "deepslate_niter_ore", @@ -36,10 +37,15 @@ "fluorite_block", "fluorite_slab", "fluorite_stairs", + "fluorite_wall", "freezer", "fuel", "gray_dye", "green_dye", + "gypsum", + "gypsum_slab", + "gypsum_stairs", + "gypsum_wall", "heat_machine_casing", "honey", "hydrochloric_acid", @@ -253,6 +259,7 @@ "cryolite_dust", "cryolite_slab", "cryolite_stairs", + "cryolite_wall", "cutting_machine", "cyan_dye_bucket", "deepslate_niter_ore", @@ -275,6 +282,7 @@ "fluorite_dust", "fluorite_slab", "fluorite_stairs", + "fluorite_wall", "freezer", "fuel_bucket", "glass_dust", @@ -282,6 +290,11 @@ "gold_gear", "gray_dye_bucket", "green_dye_bucket", + "gypsum", + "gypsum_dust", + "gypsum_slab", + "gypsum_stairs", + "gypsum_wall", "heat_machine_casing", "heat_machine_parts", "honey_bucket", diff --git a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt index 591b9ae5a..d81e04b45 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt @@ -3,6 +3,7 @@ package hiiragi283.lib.data.lang import hiiragi283.lib.advancment.AdvancementKey import hiiragi283.lib.advancment.descKey import hiiragi283.lib.advancment.titleKey +import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTPotionContent import hiiragi283.lib.resource.toLanguageKey @@ -34,6 +35,15 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H @JvmField val TIPPED_ARROW_PATTERN = HTLangPatternProvider("Arrow of %s", "%sの矢") + + @JvmField + val SLAB_PATTERN = HTLangPatternProvider("%s Slab", "%sのハーフブロック") + + @JvmField + val STAIRS_PATTERN = HTLangPatternProvider("%s Stairs", "%sの階段") + + @JvmField + val WALL_PATTERN = HTLangPatternProvider("%s Wall", "%sの壁") } fun add(translatable: HTHasTranslationKey, value: String) { @@ -105,4 +115,16 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H add("item.minecraft.lingering_potion.effect.$name", LINGERING_POTION_PATTERN.translate(langType, value)) add("item.minecraft.tipped_arrow.effect.$name", TIPPED_ARROW_PATTERN.translate(langType, value)) } + + /** + * @since 26.1.8 + */ + fun addDecoration(content: HTDecorationContent, name: HTLangName) { + // Slab + add(content.slab, SLAB_PATTERN, name) + // Stairs + content.stairs?.let { add(it, STAIRS_PATTERN, name) } + // Wall + content.wall?.let { add(it, WALL_PATTERN, name) } + } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt index e4b2a0e90..23e1ce095 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.data.model import hiiragi283.lib.HTConstants +import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.resource.HTValueWithId import hiiragi283.lib.resource.blockId @@ -23,6 +24,7 @@ import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.SlabBlock import net.minecraft.world.level.block.StairBlock +import net.minecraft.world.level.block.WallBlock import net.neoforged.neoforge.client.model.item.DynamicFluidContainerModel import java.util.Optional @@ -36,6 +38,15 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide // Block // + /** + * @since 26.1.8 + */ + fun BlockModelGenerators.plainVariant( + block: HTValueWithId<*>, + template: ModelTemplate, + mapping: TextureMapping + ): MultiVariant = BlockModelGenerators.plainVariant(template.createBlock(block, mapping, this.modelOutput)) + /** * ブロックJSONを生成します。 * @param block ブロックのインスタンス @@ -43,8 +54,12 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @param mapping テクスチャのマッピング * @since 26.1.8 */ - fun BlockModelGenerators.createSimple(block: Block, template: ModelTemplate, mapping: TextureMapping) { - this.createSimple(block, template.create(block, mapping, this.modelOutput)) + fun BlockModelGenerators.createSimple( + block: HTValueWithId, + template: ModelTemplate, + mapping: TextureMapping + ) { + this.createSimple(block.getOrThrow(), this.plainVariant(block, template, mapping)) } /** @@ -66,12 +81,15 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide } /** - * ハーフブロックのブロックJSONを生成します。 + * @since 26.1.8 */ - fun BlockModelGenerators.createSlab(block: HTValueWithId, fullBlock: HTValueWithId<*>) { - val fullBlockId: Identifier = fullBlock.idOrThrow.blockId + fun BlockModelGenerators.createDecoration(content: HTDecorationContent) { + val fullBlockId: Identifier = content.base.idOrThrow.blockId val texture = Material(fullBlockId) - this.createSlab(block, fullBlockId, texture, texture, texture) + + this.createSlab(content.slab, fullBlockId, texture, texture, texture) + content.stairs?.let { this.createStairs(it, texture, texture, texture) } + content.wall?.let { this.createWall(it, texture) } } /** @@ -95,22 +113,13 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide BlockModelGenerators.createSlab( slab, BlockModelGenerators.plainVariant(modelId), - BlockModelGenerators.plainVariant(ModelTemplates.SLAB_TOP.createBlock(block, mapping, modelOutput)), + this.plainVariant(block, ModelTemplates.SLAB_TOP, mapping), BlockModelGenerators.plainVariant(fullModel) ) ) registerSimpleItemModel(slab, modelId) } - /** - * 階段ブロックのブロックJSONを生成します。 - */ - fun BlockModelGenerators.createStairs(block: HTValueWithId, fullBlock: HTValueWithId<*>) { - val fullBlockId: Identifier = fullBlock.idOrThrow.blockId - val texture = Material(fullBlockId) - this.createStairs(block, texture, texture, texture) - } - /** * 階段ブロックのブロックJSONを生成します。 */ @@ -130,21 +139,41 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide blockStateOutput.accept( BlockModelGenerators.createStairs( stairs, - BlockModelGenerators.plainVariant(ModelTemplates.STAIRS_INNER.createBlock(block, mapping, modelOutput)), + this.plainVariant(block, ModelTemplates.STAIRS_INNER, mapping), BlockModelGenerators.plainVariant(modelId), - BlockModelGenerators.plainVariant(ModelTemplates.STAIRS_OUTER.createBlock(block, mapping, modelOutput)) + this.plainVariant(block, ModelTemplates.STAIRS_OUTER, mapping) ) ) registerSimpleItemModel(stairs, modelId) } + /** + * 壁ブロックのブロックJSONを生成します。 + * @since 26.1.8 + */ + fun BlockModelGenerators.createWall(block: HTValueWithId, wall: Material) { + val mapping: TextureMapping = TextureMapping().put(TextureSlot.WALL, wall) + this.blockStateOutput.accept( + BlockModelGenerators.createWall( + block.getOrThrow(), + this.plainVariant(block, ModelTemplates.WALL_POST, mapping), + this.plainVariant(block, ModelTemplates.WALL_LOW_SIDE, mapping), + this.plainVariant(block, ModelTemplates.WALL_TALL_SIDE, mapping) + ) + ) + this.registerSimpleItemModel( + block.getOrThrow(), + ModelTemplates.WALL_INVENTORY.createBlock(block, mapping, this.modelOutput) + ) + } + /** * 液体ブロックのブロックJSONを生成します。 * @param fluidBlock 液体ブロックの提供元 */ fun BlockModelGenerators.createFluid(fluidBlock: HTValueWithId) { this.createSimple( - fluidBlock.getOrThrow(), + fluidBlock, HTModelTemplates.FLUID_BLOCK, TextureMapping.particle(Material(vanillaId(HTConstants.BLOCK, "water_still"))) ) diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt index 513cf30b1..bfdc28426 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt @@ -8,7 +8,7 @@ import hiiragi283.lib.collection.toNel import hiiragi283.lib.data.ExporterDataProvider import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient -import hiiragi283.lib.registry.HTBasicDeferredBlockAndItem +import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.lib.tag.HTTagPrefix @@ -18,10 +18,7 @@ import net.minecraft.data.PackOutput import net.minecraft.resources.Identifier import net.minecraft.tags.TagKey import net.minecraft.world.item.Item -import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.Recipe -import net.minecraft.world.level.block.SlabBlock -import net.minecraft.world.level.block.StairBlock import net.neoforged.neoforge.common.conditions.ModLoadedCondition import java.util.concurrent.CompletableFuture @@ -79,52 +76,65 @@ abstract class HTRecipeProvider( materialTags(nelOf(CommonTagPrefixes.DUST, CommonTagPrefixes.INGOT), material) /** - * @since 26.1.7 + * @since 26.1.8 */ - fun registerSlabRecipes(slab: HTBasicDeferredBlockAndItem, base: Ingredient) { - // Shaped + fun registerDecoration(content: HTDecorationContent) { + val (base, slab, stairs, wall) = content + // Slab VanillaRecipeBuilders.shaped { +"AAA" - define('A') { +base } + define('A') { items { +base } } result { - +slab + +content.slab count = 6 } - group = slab.idOrThrow.path + group = content.slab.idOrThrow.path }.save(exporter) - // Stonecutting VanillaRecipeBuilders.stonecutting { - ingredient = base + ingredient { items { +base } } result { +slab count = 2 } group = slab.idOrThrow.path }.save(exporter) - } - - /** - * @since 26.1.7 - */ - fun registerStairsRecipes(stairs: HTBasicDeferredBlockAndItem, base: Ingredient) { - // Shaped - VanillaRecipeBuilders.shaped { - +"A " - +"AA " - +"AAA" - define('A') { +base } - result { - +stairs - count = 4 - } - group = stairs.idOrThrow.path - }.save(exporter) - // Stonecutting - VanillaRecipeBuilders.stonecutting { - ingredient = base - result { +stairs } - group = stairs.idOrThrow.path - }.save(exporter) + // Stairs + if (stairs != null) { + VanillaRecipeBuilders.shaped { + +"A " + +"AA " + +"AAA" + define('A') { items { +base } } + result { + +stairs + count = 4 + } + group = stairs.idOrThrow.path + }.save(exporter) + VanillaRecipeBuilders.stonecutting { + ingredient { items { +base } } + result { +stairs } + group = stairs.idOrThrow.path + }.save(exporter) + } + // Wall + if (wall != null) { + VanillaRecipeBuilders.shaped { + +"AAA" + +"AAA" + define('A') { items { +base } } + result { + +wall + count = 6 + } + group = wall.idOrThrow.path + }.save(exporter) + VanillaRecipeBuilders.stonecutting { + ingredient { items { +base } } + result { +wall } + group = wall.idOrThrow.path + }.save(exporter) + } } // Integration // diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt new file mode 100644 index 000000000..fc2f2f6a1 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt @@ -0,0 +1,60 @@ +package hiiragi283.lib.registry + +import net.minecraft.resources.ResourceKey +import net.minecraft.world.level.block.Block +import net.minecraft.world.level.block.SlabBlock +import net.minecraft.world.level.block.StairBlock +import net.minecraft.world.level.block.WallBlock +import net.minecraft.world.level.block.state.BlockBehaviour + +/** + * Ragiumで使用される,建材ブロックをまとめて管理するクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTDecorationContent( + val base: HTSimpleDeferredBlockAndItem, + val slab: HTBasicDeferredBlockAndItem, + val stairs: HTBasicDeferredBlockAndItem?, + val wall: HTBasicDeferredBlockAndItem? +) { + companion object { + @JvmStatic + fun copyOf(key: ResourceKey, base: HTSimpleDeferredBlockAndItem): BlockBehaviour.Properties = + BlockBehaviour.Properties.ofFullCopy(base.getOrThrow()).setId(key) + + @JvmStatic + fun create( + register: HTDeferredBlockAndItemRegister, + name: String, + base: HTSimpleDeferredBlockAndItem, + hasStairs: Boolean = true, + hasWall: Boolean = true + ): HTDecorationContent = HTDecorationContent( + base, + register.registerSimple( + "${name}_slab", + blockFactory = { key: ResourceKey -> SlabBlock(copyOf(key, base)) } + ), + when (hasStairs) { + true -> register.registerSimple( + "${name}_stairs", + blockFactory = { key: ResourceKey -> StairBlock(base.defaultState, copyOf(key, base)) } + ) + + false -> null + }, + when (hasWall) { + true -> register.registerSimple( + "${name}_wall", + blockFactory = { key: ResourceKey -> WallBlock(copyOf(key, base)) } + ) + + false -> null + } + ) + } + + val all: List get() = listOfNotNull(base, slab, stairs, wall) +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index d7bfc8de5..a2c92de6d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -79,6 +79,11 @@ sealed interface RagiumMaterial : */ BAUXITE("Bauxite", "ボーキサイト"), + /** + * @since 26.1.8 + */ + GYPSUM("Gypsum", "石膏"), + // Ragium RAGINITE("Raginite", "ラギナイト") ; diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index a1c58489d..dbf79c433 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -10,6 +10,7 @@ import hiiragi283.lib.collection.flatMapTable import hiiragi283.lib.collection.mutableEnumMapOf import hiiragi283.lib.item.alchemy.HTPotionHelper import hiiragi283.lib.registry.HTBasicDeferredBlockAndItem +import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.registry.HTDeferredBlockAndItem import hiiragi283.lib.registry.HTDeferredBlockAndItemRegister import hiiragi283.lib.registry.HTDeferredBlockEntityType @@ -37,7 +38,6 @@ import hiiragi283.ragium.common.item.block.HTCreativeTankBlockItem import hiiragi283.ragium.common.item.block.HTPotionTankBlockItem import net.minecraft.core.component.DataComponentMap import net.minecraft.core.component.DataComponents -import net.minecraft.resources.ResourceKey import net.minecraft.util.valueproviders.UniformInt import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack @@ -46,9 +46,7 @@ import net.minecraft.world.level.ItemLike import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Blocks import net.minecraft.world.level.block.DropExperienceBlock -import net.minecraft.world.level.block.SlabBlock import net.minecraft.world.level.block.SoundType -import net.minecraft.world.level.block.StairBlock import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraft.world.level.material.MapColor import net.neoforged.bus.api.IEventBus @@ -201,18 +199,10 @@ data object RagiumBlocks { ) @JvmField - val FLUORITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - "fluorite_slab", - copyOf(Blocks.QUARTZ_SLAB), - ::SlabBlock - ) - - @JvmField - val FLUORITE_STAIRS: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - "fluorite_stairs", - blockFactory = { key: ResourceKey -> - StairBlock(FLUORITE_BLOCK.defaultState, copyOf(FLUORITE_BLOCK.getOrThrow()).setId(key)) - } + val FLUORITE_DECORATION: HTDecorationContent = HTDecorationContent.create( + REGISTER, + RagiumMaterial.Gem.FLUORITE.materialName, + FLUORITE_BLOCK ) // Cryolite @@ -224,18 +214,33 @@ data object RagiumBlocks { ) @JvmField - val CRYOLITE_SLAB: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - "cryolite_slab", - copyOf(Blocks.QUARTZ_SLAB), - ::SlabBlock + val CRYOLITE_DECORATION: HTDecorationContent = HTDecorationContent.create( + REGISTER, + RagiumMaterial.Gem.CRYOLITE.materialName, + CRYOLITE_BLOCK ) + // Gypsum @JvmField - val CRYOLITE_STAIRS: HTBasicDeferredBlockAndItem = REGISTER.registerSimple( - "cryolite_stairs", - blockFactory = { key: ResourceKey -> - StairBlock(CRYOLITE_BLOCK.defaultState, copyOf(CRYOLITE_BLOCK.getOrThrow()).setId(key)) - } + val GYPSUM: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "gypsum", + copyOf(Blocks.TUFF).mapColor(MapColor.TERRACOTTA_PINK) + // itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } + ) + + @JvmField + val GYPSUM_DECORATION: HTDecorationContent = HTDecorationContent.create( + REGISTER, + RagiumMaterial.Mineral.GYPSUM.materialName, + GYPSUM + ) + + // Helper + @JvmField + val ALL_DECORATIONS: List = listOf( + FLUORITE_DECORATION, + CRYOLITE_DECORATION, + GYPSUM_DECORATION ) // Machine // diff --git a/src/main/resources/assets/ragium/textures/block/gypsum.png b/src/main/resources/assets/ragium/textures/block/gypsum.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa149beb3c97c6f3ab7541770e0f70d85444056 GIT binary patch literal 475 zcmV<10VMv3P)@=+6Xpc7eo+22?T7#3q%MB z_yEB^@-0mG73QCvGw00A&YJwzc^$PbZ${1I^Wu+o4#sDgnBn~nha(E4U(r_5-t@vP22hVj6D_V~S`HQ)-}*oU4^33c`TMI>U5S9L~#Wq$o}f0x|<4 zJIAQbRl^aRE~_eFk#M&dHLfGaqBt>4etLNM_kS-Dq!^bFS?=QMI(dJw>B|+Oo6Slv zV!kT&{;+sP=S+-jF*>U%!Nk1I@FJ}IPBi=j00960Ae%So00006NklBf002ovPDHLkV1jmD$twT= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/cement.png b/src/main/resources/assets/ragium/textures/item/cement.png index 951579a79332b63543999d9a5d0b772d513c115c..4be41cebfa75168048f3380186660934583dbf65 100644 GIT binary patch delta 323 zcmV-J0lfa#0^S0UB!3f0L_t(|0nCpvu0c@{hUZzu%X@h*iYq9oBnpw-2&Elp6xP53 z>_DNh3nCJgL`8|Xg%DyF_)g4;d)%whILVwdGiUy9W)kw|`EWqpFI})#TgI+{u<942 z*=h)W93&Ee0O4OMV{~5fM{?Qp#RSfkaAMO9vE~okwUlcW@qdf?NJt2vomI@s6w~2Y zg54<+VgZQR84*V3es6#)p7$@T!6eDw@6aR`Ah$y|gg004S%o+V_M`+LAQRj#3)mgc z!l(%Ef1+Y0AcvS$@YO6}x!Qb9W(x!1Q^g2$0(=@#OATfL1bhH#ce*l~%t@Ku5t4Vs z6oddIfM66O!aVTFVbna@6F@&Hel*RyZ!EwqjEk=T00960W}`XR00006Nkl}e>KtQGlUKVijZ^EcRf-_Mw z6VSuVD&!g#aJ=3#%k|zsI8-wRoq(K+(4rwMfPw=cjN#bJI3V)?wS!q05pIQ zh%pi5^awQJh&2K95OFxP?|xGOt}v~B0{{U3|F5_+!~g&Q21!IgR09CIXpkYlLB&h} O0000@-dMtKeTZq9Ay&Ww$X zsWWrVx&Qy&b0#f6K7S4vbq6ov+m?wdV5~Q*(i`@LJP8sDz<|*!<&Cf4Wu;SVzf9r0 zA^O07>v1L0837<2-1 zE<%fjumB1UfK0|y*=-KA%9mf ze1L+*O>SrA_1^R5wJbkAe-79z=P~*=W#I?}E6t8{`$J)01jz*uAlU5< zOb*auI*!dD^~wM=T&cGudfw#y2n0~8Rg*kO0-#}<5C&3hbbsWqTbohxAQnKFs}cf0 zXWu&sXU6d_M;T3Kl7?6SA+AbD_jKn>m>PRlR~8V4FLPBwbY%o?5#0mRnGkzcR~E3^ z?n^-EMkft37XLs)c<}1k0x0kSgLl4)cGHzQ!h=_p08qq$FuS6L@VLqV^dn|hT2HTq wfV8pb`~d&}|0DlAsCBvk000I_L_t&o0GB_OA=0od8~^|S07*qoM6N<$g8k}zssI20 diff --git a/src/main/resources/assets/ragium/textures/item/mortar.png b/src/main/resources/assets/ragium/textures/item/mortar.png index 767d1a38608c1435136bc1a952871845c483d19e..4fb340bd991f419172f48e72f7b16e172e8d17c2 100644 GIT binary patch delta 332 zcmV-S0ki(^0_OsdB!3)9L_t(|0nCs+iUL6ph08sNEbPGIW}7W6Xd=ZMw-9%M&qWqf_Zd)t01yB~L}~zzjVA-$glt3CgE7(|NQ}yF00030|7Rg*ZU6uP e21!IgR09BZ29_b0$<hT0li8g~mrFQz;;h+f3umU7y2F411b_e_B2oizOgtFqL&zp{-5q@m+(f_p3IG8A m|6pw$c>n+a21!IgR09A{@RlK~qiq)e0000 Date: Tue, 29 Sep 2026 21:01:23 +0900 Subject: [PATCH 25/38] =?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=8CSmooth=20Gypsum=20?= =?UTF-8?q?/=20=E6=BB=91=E3=82=89=E3=81=8B=E3=81=AA=E7=9F=B3=E8=86=8F?= =?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 --- .../ragium/data/lang/RagiumLangProvider.kt | 3 + .../ragium/data/model/RagiumModelProvider.kt | 5 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 314 ++++++++++-------- .../recipe/RagiumVanillaRecipeProvider.kt | 86 ++++- .../ragium/blockstates/smooth_gypsum.json | 7 + .../blockstates/smooth_gypsum_slab.json | 13 + .../blockstates/smooth_gypsum_stairs.json | 209 ++++++++++++ .../blockstates/smooth_gypsum_wall.json | 90 +++++ .../assets/ragium/items/smooth_gypsum.json | 6 + .../ragium/items/smooth_gypsum_slab.json | 6 + .../ragium/items/smooth_gypsum_stairs.json | 6 + .../ragium/items/smooth_gypsum_wall.json | 6 + .../resources/assets/ragium/lang/en_us.json | 4 + .../resources/assets/ragium/lang/ja_jp.json | 4 + .../ragium/models/block/smooth_gypsum.json | 6 + .../models/block/smooth_gypsum_slab.json | 8 + .../models/block/smooth_gypsum_slab_top.json | 8 + .../models/block/smooth_gypsum_stairs.json | 8 + .../block/smooth_gypsum_stairs_inner.json | 8 + .../block/smooth_gypsum_stairs_outer.json | 8 + .../block/smooth_gypsum_wall_inventory.json | 6 + .../models/block/smooth_gypsum_wall_post.json | 6 + .../models/block/smooth_gypsum_wall_side.json | 6 + .../block/smooth_gypsum_wall_side_tall.json | 6 + .../tags/block/mineable/pickaxe.json | 4 + .../data/minecraft/tags/block/slabs.json | 3 +- .../data/minecraft/tags/block/stairs.json | 3 +- .../data/minecraft/tags/block/walls.json | 3 +- .../data/minecraft/tags/item/slabs.json | 3 +- .../data/minecraft/tags/item/stairs.json | 3 +- .../data/minecraft/tags/item/walls.json | 3 +- .../loot_table/blocks/smooth_gypsum.json | 21 ++ .../loot_table/blocks/smooth_gypsum_slab.json | 35 ++ .../blocks/smooth_gypsum_stairs.json | 21 ++ .../loot_table/blocks/smooth_gypsum_wall.json | 21 ++ .../ragium/recipe/crushing/gypsum_dust.json | 12 + .../recipe/pyrolyzing/quick_lime_dust.json | 16 + .../ragium/recipe/shaped/smooth_gypsum.json | 15 + .../recipe/shaped/smooth_gypsum_slab.json | 15 + .../recipe/shaped/smooth_gypsum_stairs.json | 17 + .../recipe/shaped/smooth_gypsum_wall.json | 16 + .../stonecutting/smooth_gypsum_slab.json | 11 + .../stonecutting/smooth_gypsum_stairs.json | 10 + .../stonecutting/smooth_gypsum_wall.json | 10 + .../resources/reports/ragium/registries.json | 8 + .../lib/data/recipe/HTRecipeProvider.kt | 64 ---- .../lib/registry/HTDecorationContent.kt | 9 +- .../ragium/common/block/RagiumBlocks.kt | 18 +- .../ragium/textures/block/smooth_gypsum.png | Bin 0 -> 362 bytes 49 files changed, 945 insertions(+), 225 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json create mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json create mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum.json create mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json create mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/pyrolyzing/quick_lime_dust.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json create mode 100644 src/main/resources/assets/ragium/textures/block/smooth_gypsum.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 3203882b0..d6bf51c0b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -34,6 +34,9 @@ interface RagiumLangProvider { provider.addDecoration(RagiumBlocks.CRYOLITE_DECORATION, RagiumMaterial.Gem.CRYOLITE) provider.add(RagiumBlocks.GYPSUM, RagiumMaterial.Mineral.GYPSUM) provider.addDecoration(RagiumBlocks.GYPSUM_DECORATION, RagiumMaterial.Mineral.GYPSUM) + val smoothGypsum = HTLangName("Smooth Gypsum", "滑らかな石膏") + provider.add(RagiumBlocks.SMOOTH_GYPSUM, smoothGypsum) + provider.addDecoration(RagiumBlocks.SMOOTH_GYPSUM_DECORATION, smoothGypsum) val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index e5b003c60..96e1df05e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -69,15 +69,14 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP yield(RagiumBlocks.FLUORITE_BLOCK) yield(RagiumBlocks.CRYOLITE_BLOCK) yield(RagiumBlocks.GYPSUM) + yield(RagiumBlocks.SMOOTH_GYPSUM) yield(RagiumBlocks.CREATIVE_BATTERY) // TODO yield(RagiumBlocks.MACHINE_CASING) }.forEach { generators.createTrivialCube(it.getOrThrow()) } - generators.createDecoration(RagiumBlocks.FLUORITE_DECORATION) - generators.createDecoration(RagiumBlocks.CRYOLITE_DECORATION) - generators.createDecoration(RagiumBlocks.GYPSUM_DECORATION) + RagiumBlocks.ALL_DECORATIONS.forEach { generators.createDecoration(it) } // Machine val inactiveModels: Map = HTMachineType.entries diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 5181a7251..6684026e8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -242,14 +242,16 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu private fun chemical() { colored() - alkali() - chlorine() - sulfuricAcid() - nitricAcid() + nitrogen() explosive() - fluorine() + + sodium() aluminum() + sulfur() + chlorine() + + calcium() } private fun colored() { @@ -310,7 +312,61 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } - private fun alkali() { + private fun nitrogen() { + // 1/2 H2SO4 + KNO3 -> HNO3 + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.NITER) } + fluidIngredient { + +holderSet(RagiumFluids.SULFURIC_ACID) + amount /= 2 + } + result { +RagiumFluids.NITRIC_ACID } + recipeId suffix "_from_niter" + }.save(exporter) + } + + private fun explosive() { + // Aromatic Compound + HNO3 -> Liquid Explosive + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.AROMATIC_COMPOUND) } + secondaryIngredient { +holderSet(RagiumFluids.NITRIC_ACID) } + fluidResult { +RagiumFluids.LIQUID_EXPLOSIVE } + }.save(exporter) + + // Sand + Liquid Explosive -> TNT + RagiumRecipeBuilders.bathing { + itemIngredient { + +holderSet(Tags.Items.SANDS) + count = 8 + } + fluidIngredient { +holderSet(RagiumFluids.LIQUID_EXPLOSIVE) } + result { + +Items.TNT + count = 8 + } + }.save(exporter) + // Clay + Liquid Explosive -> Plastic Explosive TODO + } + + private fun fluorine() { + // CaF2 + H2SO4 -> 2x HF + CaSO4 + RagiumRecipeBuilders.mixing { + itemIngredient { +dustOrGem(RagiumMaterial.Gem.FLUORITE) } + fluidIngredient { +holderSet(RagiumFluids.SULFURIC_ACID) } + result { + +RagiumFluids.HYDROGEN_FLUORIDE + amount *= 2 + } + }.save(exporter) + // HF + H2O -> HF(aq) + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.HYDROGEN_FLUORIDE) } + secondaryIngredient { +waterSet() } + fluidResult { +RagiumFluids.HYDROFLUORIC_ACID } + }.save(exporter) + } + + private fun sodium() { // Dried Kelp -> Na2CO3 VanillaRecipeBuilders.smeltingAndBlasting(exporter) { ingredient { items { +Items.DRIED_KELP } } @@ -343,23 +399,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } }.save(exporter) - // Calcite / Dripstone -> CaCO3 - RagiumRecipeBuilders.crushing { - ingredient { - items { - +Items.CALCITE - +Items.DRIPSTONE_BLOCK - } - } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.LIME) } - }.save(exporter) - // CaCO3 -> CaO + CO2 - VanillaRecipeBuilders.smeltingAndBlasting(exporter) { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.LIME) } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.QUICK_LIME) } - exp = 0.15f - } - // Wood Pulp + NaOH aq -> Paper Pulp RagiumRecipeBuilders.bathing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.WOOD) } @@ -382,6 +421,84 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } + private fun aluminum() { + // Bauxite + NaOH aq -> Alumina Solution + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.BAUXITE) } + fluidIngredient { + +holderSet(RagiumFluids.NAOH_SOLUTION) + amount /= 2 + } + result { +RagiumFluids.ALUMINA_SOLUTION } + }.save(exporter) + // Alumina Solution -> Al2O3 + Water + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } + fluidResult { +Fluids.WATER } + recipeId replace id("alumina_dust_from_solution") + }.save(exporter) + // Alumina Solution + HF aq -> Na3AlF6 + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } + secondaryIngredient { + +holderSet(RagiumFluids.HYDROFLUORIC_ACID) + amount *= 6 + } + itemResult { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + }.save(exporter) + // Al2O3 + Cokes + Na3AlF6 -> Al + RagiumRecipeBuilders.alloying { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } + extra { +holderSet(RagiumTags.Items.COKES) } + result { + +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) + count = 2 + } + time *= 4 + }.save(exporter) + RagiumRecipeBuilders.alloying { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } + extra { +holderSet(RagiumTags.Items.COKES) } + extra { +dustOrGem(RagiumMaterial.Gem.CRYOLITE) } + result { + +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) + count = 3 + } + recipeId suffix "_with_cryolite" + }.save(exporter) + // Al + Cu -> Alclad Plate + RagiumRecipeBuilders.assembling { + ingredient { + +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.ALUMINUM) + count = 3 + } + extra { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) } + result { + +RagiumItems.ALCLAD_PLATE + count = 4 + } + }.save(exporter) + } + + private fun sulfur() { + // SO2 + 1/2 O2 -> SO3 + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.SULFUR_DIOXIDE) } + secondaryIngredient { + +holderSet(RagiumFluids.OXYGEN) + amount /= 2 + } + fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } + }.save(exporter) + // SO3 + H2O -> H2SO4 + RagiumRecipeBuilders.reacting { + primaryIngredient { +holderSet(RagiumFluids.SULFUR_TRIOXIDE) } + secondaryIngredient { +waterSet() } + fluidResult { +RagiumFluids.SULFURIC_ACID } + }.save(exporter) + } + private fun chlorine() { // NaCl(aq) -> H2O + NaCl RagiumRecipeBuilders.refining { @@ -458,136 +575,41 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } } - private fun sulfuricAcid() { - // SO2 + 1/2 O2 -> SO3 - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.SULFUR_DIOXIDE) } - secondaryIngredient { - +holderSet(RagiumFluids.OXYGEN) - amount /= 2 - } - fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } - }.save(exporter) - // SO3 + H2O -> H2SO4 - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.SULFUR_TRIOXIDE) } - secondaryIngredient { +waterSet() } - fluidResult { +RagiumFluids.SULFURIC_ACID } - }.save(exporter) - } - - private fun nitricAcid() { - // 1/2 H2SO4 + KNO3 -> HNO3 - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.NITER) } - fluidIngredient { - +holderSet(RagiumFluids.SULFURIC_ACID) - amount /= 2 - } - result { +RagiumFluids.NITRIC_ACID } - recipeId suffix "_from_niter" - }.save(exporter) - } - - private fun explosive() { - // Aromatic Compound + HNO3 -> Liquid Explosive - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.AROMATIC_COMPOUND) } - secondaryIngredient { +holderSet(RagiumFluids.NITRIC_ACID) } - fluidResult { +RagiumFluids.LIQUID_EXPLOSIVE } - }.save(exporter) - - // Sand + Liquid Explosive -> TNT - RagiumRecipeBuilders.bathing { - itemIngredient { - +holderSet(Tags.Items.SANDS) - count = 8 - } - fluidIngredient { +holderSet(RagiumFluids.LIQUID_EXPLOSIVE) } - result { - +Items.TNT - count = 8 - } - }.save(exporter) - // Clay + Liquid Explosive -> Plastic Explosive TODO - } - - private fun fluorine() { - // CaF2 + H2SO4 -> 2x HF + CaSO4 - RagiumRecipeBuilders.mixing { - itemIngredient { +dustOrGem(RagiumMaterial.Gem.FLUORITE) } - fluidIngredient { +holderSet(RagiumFluids.SULFURIC_ACID) } - result { - +RagiumFluids.HYDROGEN_FLUORIDE - amount *= 2 + private fun calcium() { + // Calcite / Dripstone -> CaCO3 + RagiumRecipeBuilders.crushing { + ingredient { + items { + +Items.CALCITE + +Items.DRIPSTONE_BLOCK + } } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.LIME) } }.save(exporter) - // HF + H2O -> HF(aq) - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.HYDROGEN_FLUORIDE) } - secondaryIngredient { +waterSet() } - fluidResult { +RagiumFluids.HYDROFLUORIC_ACID } - }.save(exporter) - } + // CaCO3 -> CaO + CO2 + VanillaRecipeBuilders.smeltingAndBlasting(exporter) { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.LIME) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.QUICK_LIME) } + exp = 0.15f + } - private fun aluminum() { - // Bauxite + NaOH aq -> Alumina Solution - RagiumRecipeBuilders.mixing { - itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.BAUXITE) } - fluidIngredient { - +holderSet(RagiumFluids.NAOH_SOLUTION) - amount /= 2 - } - result { +RagiumFluids.ALUMINA_SOLUTION } - }.save(exporter) - // Alumina Solution -> Al2O3 + Water - RagiumRecipeBuilders.refining { - ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } - fluidResult { +Fluids.WATER } - recipeId replace id("alumina_dust_from_solution") - }.save(exporter) - // Alumina Solution + HF aq -> Na3AlF6 - RagiumRecipeBuilders.reacting { - primaryIngredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } - secondaryIngredient { - +holderSet(RagiumFluids.HYDROFLUORIC_ACID) - amount *= 6 + // Gypsum Dust + RagiumRecipeBuilders.crushing { + ingredient { + items { + +RagiumBlocks.GYPSUM + +RagiumBlocks.SMOOTH_GYPSUM + } } - itemResult { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.GYPSUM) } }.save(exporter) - // Al2O3 + Cokes + Na3AlF6 -> Al - RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } - extra { +holderSet(RagiumTags.Items.COKES) } - result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) - count = 2 - } + // CaSO4 -> CaO + SO3 + RagiumRecipeBuilders.pyrolyzing { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.GYPSUM) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.QUICK_LIME) } + fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } time *= 4 }.save(exporter) - RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINA) } - extra { +holderSet(RagiumTags.Items.COKES) } - extra { +dustOrGem(RagiumMaterial.Gem.CRYOLITE) } - result { - +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Metal.ALUMINUM) - count = 3 - } - recipeId suffix "_with_cryolite" - }.save(exporter) - // Al + Cu -> Alclad Plate - RagiumRecipeBuilders.assembling { - ingredient { - +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.ALUMINUM) - count = 3 - } - extra { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.COPPER) } - result { - +RagiumItems.ALCLAD_PLATE - count = 4 - } - }.save(exporter) } // Electronics // diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index c7d065591..285539e97 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders import hiiragi283.lib.data.recipe.ingredient.IngredientBuilder import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType +import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.resource.vanillaId @@ -41,6 +42,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { vanilla() + decoration() machine() storage() material() @@ -286,6 +288,88 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut }.save(exporter) } + // Decoration // + + private fun decoration() { + RagiumBlocks.ALL_DECORATIONS.forEach(::registerDecoration) + + // Smooth Gypsum + VanillaRecipeBuilders.shaped { + +"AA" + +"AA" + define('A') { items { +RagiumBlocks.GYPSUM } } + result { + +RagiumBlocks.SMOOTH_GYPSUM + count = 4 + } + }.save(exporter) + } + + private fun registerDecoration(content: HTDecorationContent) { + val (base, slab, stairs, wall) = content + val stonecutterInput: IngredientBuilder.() -> Unit = { + items { + +base + content.parent()?.base?.let { +it } + } + } + // Slab + VanillaRecipeBuilders.shaped { + +"AAA" + define('A') { items { +base } } + result { + +content.slab + count = 6 + } + group = content.slab.idOrThrow.path + }.save(exporter) + VanillaRecipeBuilders.stonecutting { + ingredient(stonecutterInput) + result { + +slab + count = 2 + } + group = slab.idOrThrow.path + }.save(exporter) + // Stairs + if (stairs != null) { + VanillaRecipeBuilders.shaped { + +"A " + +"AA " + +"AAA" + define('A') { items { +base } } + result { + +stairs + count = 4 + } + group = stairs.idOrThrow.path + }.save(exporter) + VanillaRecipeBuilders.stonecutting { + ingredient(stonecutterInput) + result { +stairs } + group = stairs.idOrThrow.path + }.save(exporter) + } + // Wall + if (wall != null) { + VanillaRecipeBuilders.shaped { + +"AAA" + +"AAA" + define('A') { items { +base } } + result { + +wall + count = 6 + } + group = wall.idOrThrow.path + }.save(exporter) + VanillaRecipeBuilders.stonecutting { + ingredient(stonecutterInput) + result { +wall } + group = wall.idOrThrow.path + }.save(exporter) + } + } + // Machine // private fun machine() { @@ -476,8 +560,6 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut gemBlock(RagiumMaterial.Gem.FLUORITE, RagiumBlocks.FLUORITE_BLOCK) gemBlock(RagiumMaterial.Gem.CRYOLITE, RagiumBlocks.CRYOLITE_BLOCK) - RagiumBlocks.ALL_DECORATIONS.forEach(::registerDecoration) - nineToBlock(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT) nineToBlock(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT) nineToBlock(RagiumMaterial.Alloy.BLACK_STEEL, HTItemPart.INGOT) diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json new file mode 100644 index 000000000..b5577eb71 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/smooth_gypsum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json new file mode 100644 index 000000000..f214e6def --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "ragium:block/smooth_gypsum_slab" + }, + "type=double": { + "model": "ragium:block/smooth_gypsum" + }, + "type=top": { + "model": "ragium:block/smooth_gypsum_slab_top" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json new file mode 100644 index 000000000..8c0ce804e --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "ragium:block/smooth_gypsum_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "ragium:block/smooth_gypsum_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "ragium:block/smooth_gypsum_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json new file mode 100644 index 000000000..b9b1ab5b1 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "ragium:block/smooth_gypsum_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum.json b/src/generated/resources/assets/ragium/items/smooth_gypsum.json new file mode 100644 index 000000000..de2d6ed19 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smooth_gypsum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json new file mode 100644 index 000000000..1321f5fe6 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smooth_gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json new file mode 100644 index 000000000..f2a4bd9d9 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smooth_gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json new file mode 100644 index 000000000..a2f31f3cc --- /dev/null +++ b/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/smooth_gypsum_wall_inventory" + } +} \ 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 2286e7a82..482f16172 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -110,6 +110,10 @@ "block.ragium.salt_water": "Salt Water", "block.ragium.scanner": "Laser Scanner", "block.ragium.smelter": "Smelter", + "block.ragium.smooth_gypsum": "Smooth Gypsum", + "block.ragium.smooth_gypsum_slab": "Smooth Gypsum Slab", + "block.ragium.smooth_gypsum_stairs": "Smooth Gypsum Stairs", + "block.ragium.smooth_gypsum_wall": "Smooth Gypsum Wall", "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 58eab44ea..a359e9206 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -110,6 +110,10 @@ "block.ragium.salt_water": "塩水", "block.ragium.scanner": "レーザースキャナ", "block.ragium.smelter": "製錬炉", + "block.ragium.smooth_gypsum": "滑らかな石膏", + "block.ragium.smooth_gypsum_slab": "滑らかな石膏のハーフブロック", + "block.ragium.smooth_gypsum_stairs": "滑らかな石膏の階段", + "block.ragium.smooth_gypsum_wall": "滑らかな石膏の壁", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "block.ragium.sooty_iron_block": "煤鉄ブロック", "block.ragium.sulfur_dioxide": "二酸化硫黄", diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json new file mode 100644 index 000000000..a4196a093 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json new file mode 100644 index 000000000..fd18614b5 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "ragium:block/smooth_gypsum", + "side": "ragium:block/smooth_gypsum", + "top": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json new file mode 100644 index 000000000..a55044ca8 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "ragium:block/smooth_gypsum", + "side": "ragium:block/smooth_gypsum", + "top": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json new file mode 100644 index 000000000..e95fcb6d0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "ragium:block/smooth_gypsum", + "side": "ragium:block/smooth_gypsum", + "top": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json new file mode 100644 index 000000000..ab638cc92 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "ragium:block/smooth_gypsum", + "side": "ragium:block/smooth_gypsum", + "top": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json new file mode 100644 index 000000000..003d0d9b3 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "ragium:block/smooth_gypsum", + "side": "ragium:block/smooth_gypsum", + "top": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json new file mode 100644 index 000000000..965a49fe6 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json new file mode 100644 index 000000000..490f624e7 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json new file mode 100644 index 000000000..1f65deeca --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "ragium:block/smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json new file mode 100644 index 000000000..5d559fbc4 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "ragium:block/smooth_gypsum" + } +} \ 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 6efb5b949..3731efd4b 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -53,6 +53,10 @@ "ragium:refinery", "ragium:scanner", "ragium:smelter", + "ragium:smooth_gypsum", + "ragium:smooth_gypsum_slab", + "ragium:smooth_gypsum_stairs", + "ragium:smooth_gypsum_wall", "ragium:sooty_iron_block", "ragium:sulfur_ore", "ragium:tank", diff --git a/src/generated/resources/data/minecraft/tags/block/slabs.json b/src/generated/resources/data/minecraft/tags/block/slabs.json index c72eb2f6b..33495f24c 100644 --- a/src/generated/resources/data/minecraft/tags/block/slabs.json +++ b/src/generated/resources/data/minecraft/tags/block/slabs.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_slab", "ragium:fluorite_slab", - "ragium:gypsum_slab" + "ragium:gypsum_slab", + "ragium:smooth_gypsum_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/stairs.json b/src/generated/resources/data/minecraft/tags/block/stairs.json index 2de720d94..dcc560227 100644 --- a/src/generated/resources/data/minecraft/tags/block/stairs.json +++ b/src/generated/resources/data/minecraft/tags/block/stairs.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_stairs", "ragium:fluorite_stairs", - "ragium:gypsum_stairs" + "ragium:gypsum_stairs", + "ragium:smooth_gypsum_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/walls.json b/src/generated/resources/data/minecraft/tags/block/walls.json index b7547c2dd..af9d684cd 100644 --- a/src/generated/resources/data/minecraft/tags/block/walls.json +++ b/src/generated/resources/data/minecraft/tags/block/walls.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_wall", "ragium:fluorite_wall", - "ragium:gypsum_wall" + "ragium:gypsum_wall", + "ragium:smooth_gypsum_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/slabs.json b/src/generated/resources/data/minecraft/tags/item/slabs.json index c72eb2f6b..33495f24c 100644 --- a/src/generated/resources/data/minecraft/tags/item/slabs.json +++ b/src/generated/resources/data/minecraft/tags/item/slabs.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_slab", "ragium:fluorite_slab", - "ragium:gypsum_slab" + "ragium:gypsum_slab", + "ragium:smooth_gypsum_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/stairs.json b/src/generated/resources/data/minecraft/tags/item/stairs.json index 2de720d94..dcc560227 100644 --- a/src/generated/resources/data/minecraft/tags/item/stairs.json +++ b/src/generated/resources/data/minecraft/tags/item/stairs.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_stairs", "ragium:fluorite_stairs", - "ragium:gypsum_stairs" + "ragium:gypsum_stairs", + "ragium:smooth_gypsum_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/walls.json b/src/generated/resources/data/minecraft/tags/item/walls.json index b7547c2dd..af9d684cd 100644 --- a/src/generated/resources/data/minecraft/tags/item/walls.json +++ b/src/generated/resources/data/minecraft/tags/item/walls.json @@ -2,6 +2,7 @@ "values": [ "ragium:cryolite_wall", "ragium:fluorite_wall", - "ragium:gypsum_wall" + "ragium:gypsum_wall", + "ragium:smooth_gypsum_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json new file mode 100644 index 000000000..b4264023b --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:smooth_gypsum" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smooth_gypsum" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json new file mode 100644 index 000000000..753b275ea --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "ragium:smooth_gypsum_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "ragium:smooth_gypsum_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smooth_gypsum_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json new file mode 100644 index 000000000..bb3b45001 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:smooth_gypsum_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smooth_gypsum_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json new file mode 100644 index 000000000..b306a3bb6 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:smooth_gypsum_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/smooth_gypsum_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json b/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json new file mode 100644 index 000000000..ef25e139a --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "ragium:gypsum" + }, + "result": { + "count": 1, + "id": "ragium:gypsum_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/pyrolyzing/quick_lime_dust.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/quick_lime_dust.json new file mode 100644 index 000000000..8c2cada30 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/pyrolyzing/quick_lime_dust.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:pyrolyzing", + "fluid_result": { + "amount": 1000, + "id": "ragium:sulfur_trioxide" + }, + "ingredient": { + "count": 1, + "items": "#c:dusts/gypsum" + }, + "item_result": { + "count": 1, + "id": "ragium:quick_lime_dust" + }, + "time": 800 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json new file mode 100644 index 000000000..b98151013 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "ragium:gypsum" + }, + "pattern": [ + "AA", + "AA" + ], + "result": { + "count": 4, + "id": "ragium:smooth_gypsum" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json new file mode 100644 index 000000000..bf520e1a5 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "smooth_gypsum_slab", + "key": { + "A": "ragium:smooth_gypsum" + }, + "pattern": [ + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:smooth_gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json new file mode 100644 index 000000000..2ea276d6f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "smooth_gypsum_stairs", + "key": { + "A": "ragium:smooth_gypsum" + }, + "pattern": [ + "A ", + "AA ", + "AAA" + ], + "result": { + "count": 4, + "id": "ragium:smooth_gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json new file mode 100644 index 000000000..f84282f6c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "smooth_gypsum_wall", + "key": { + "A": "ragium:smooth_gypsum" + }, + "pattern": [ + "AAA", + "AAA" + ], + "result": { + "count": 6, + "id": "ragium:smooth_gypsum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json new file mode 100644 index 000000000..7f19da183 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": [ + "ragium:smooth_gypsum", + "ragium:gypsum" + ], + "result": { + "count": 2, + "id": "ragium:smooth_gypsum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json new file mode 100644 index 000000000..53dac7f7d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": [ + "ragium:smooth_gypsum", + "ragium:gypsum" + ], + "result": { + "id": "ragium:smooth_gypsum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json new file mode 100644 index 000000000..a92d49dea --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": [ + "ragium:smooth_gypsum", + "ragium:gypsum" + ], + "result": { + "id": "ragium:smooth_gypsum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index a7981b077..fc8085e03 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -78,6 +78,10 @@ "salt_water", "scanner", "smelter", + "smooth_gypsum", + "smooth_gypsum_slab", + "smooth_gypsum_stairs", + "smooth_gypsum_wall", "sodium_hydroxide_solution", "sooty_iron_block", "sulfur_ore", @@ -364,6 +368,10 @@ "silicon_dust", "silicon_wafer", "smelter", + "smooth_gypsum", + "smooth_gypsum_slab", + "smooth_gypsum_stairs", + "smooth_gypsum_wall", "sodium_carbonate_dust", "sodium_hydroxide_solution_bucket", "sooty_iron_axe", diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt index bfdc28426..2330815c2 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/HTRecipeProvider.kt @@ -6,9 +6,7 @@ import hiiragi283.lib.collection.Nel import hiiragi283.lib.collection.nelOf import hiiragi283.lib.collection.toNel import hiiragi283.lib.data.ExporterDataProvider -import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient -import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.lib.tag.HTTagPrefix @@ -75,68 +73,6 @@ abstract class HTRecipeProvider( fun dustOrIngot(material: HTMaterialLike): HTMaterialTagsIngredient = materialTags(nelOf(CommonTagPrefixes.DUST, CommonTagPrefixes.INGOT), material) - /** - * @since 26.1.8 - */ - fun registerDecoration(content: HTDecorationContent) { - val (base, slab, stairs, wall) = content - // Slab - VanillaRecipeBuilders.shaped { - +"AAA" - define('A') { items { +base } } - result { - +content.slab - count = 6 - } - group = content.slab.idOrThrow.path - }.save(exporter) - VanillaRecipeBuilders.stonecutting { - ingredient { items { +base } } - result { - +slab - count = 2 - } - group = slab.idOrThrow.path - }.save(exporter) - // Stairs - if (stairs != null) { - VanillaRecipeBuilders.shaped { - +"A " - +"AA " - +"AAA" - define('A') { items { +base } } - result { - +stairs - count = 4 - } - group = stairs.idOrThrow.path - }.save(exporter) - VanillaRecipeBuilders.stonecutting { - ingredient { items { +base } } - result { +stairs } - group = stairs.idOrThrow.path - }.save(exporter) - } - // Wall - if (wall != null) { - VanillaRecipeBuilders.shaped { - +"AAA" - +"AAA" - define('A') { items { +base } } - result { - +wall - count = 6 - } - group = wall.idOrThrow.path - }.save(exporter) - VanillaRecipeBuilders.stonecutting { - ingredient { items { +base } } - result { +wall } - group = wall.idOrThrow.path - }.save(exporter) - } - } - // Integration // abstract class Integration( diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt index fc2f2f6a1..e8ece995f 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt @@ -17,7 +17,8 @@ data class HTDecorationContent( val base: HTSimpleDeferredBlockAndItem, val slab: HTBasicDeferredBlockAndItem, val stairs: HTBasicDeferredBlockAndItem?, - val wall: HTBasicDeferredBlockAndItem? + val wall: HTBasicDeferredBlockAndItem?, + val parent: () -> HTDecorationContent? ) { companion object { @JvmStatic @@ -30,7 +31,8 @@ data class HTDecorationContent( name: String, base: HTSimpleDeferredBlockAndItem, hasStairs: Boolean = true, - hasWall: Boolean = true + hasWall: Boolean = true, + parent: () -> HTDecorationContent? = { null } ): HTDecorationContent = HTDecorationContent( base, register.registerSimple( @@ -52,7 +54,8 @@ data class HTDecorationContent( ) false -> null - } + }, + parent ) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index dbf79c433..15b90838e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -235,12 +235,28 @@ data object RagiumBlocks { GYPSUM ) + @JvmField + val SMOOTH_GYPSUM: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( + "smooth_gypsum", + copyOf(Blocks.TUFF).mapColor(MapColor.TERRACOTTA_PINK) + // itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } + ) + + @JvmField + val SMOOTH_GYPSUM_DECORATION: HTDecorationContent = HTDecorationContent.create( + REGISTER, + "smooth_gypsum", + SMOOTH_GYPSUM, + parent = { GYPSUM_DECORATION } + ) + // Helper @JvmField val ALL_DECORATIONS: List = listOf( FLUORITE_DECORATION, CRYOLITE_DECORATION, - GYPSUM_DECORATION + GYPSUM_DECORATION, + SMOOTH_GYPSUM_DECORATION ) // Machine // diff --git a/src/main/resources/assets/ragium/textures/block/smooth_gypsum.png b/src/main/resources/assets/ragium/textures/block/smooth_gypsum.png new file mode 100644 index 0000000000000000000000000000000000000000..6f81a3366ddce897d2fb6b3c714987c66ae5e0b9 GIT binary patch literal 362 zcmV-w0hRuVP)~>>`rvhRekH#-km>(ZjlPOeV_*B49Tg0geRb#U5;i~{9o9UsRtGj_S`zaNWrXYr% zr-$c;UPA}H3NRsP23IHS$ysUzWWxXx(O)|Q`pQ=UOkjYCc}5JxJ@ob!5K(V(*u&sf z!64@qU@?UOQ$uuyS^o=QLMC_)p$bOmp#m5JBZvt+k3oeV=+z2fuu&O74E?|q(wq55 zt-m(yezk0=*4K;MHbuWj$PWMj0RR6Ijya0}000I_L_t&o0P_PY@asBb3jhEB07*qo IM6N<$f^^lHk^lez literal 0 HcmV?d00001 From d9aec0bee5e842a6d0ef8d0cbebb35a89fe893e6 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:07:31 +0900 Subject: [PATCH 26/38] =?UTF-8?q?feat:=20=E5=9B=9E=E8=B7=AF=E5=9F=BA?= =?UTF-8?q?=E6=9D=BF=E3=82=92=E5=BE=A9=E6=B4=BB?= 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 + .../data/recipe/RagiumCommonRecipeProvider.kt | 18 ++++++++++++++- .../assets/ragium/items/circuit_board.json | 6 +++++ .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/item/circuit_board.json | 6 +++++ .../ragium/recipe/alloying/circuit_board.json | 22 +++++++++++++++++++ .../electric_circuit_with_board.json | 16 ++++++++++++++ .../ragium/recipe/crushing/gypsum_dust.json | 5 ++++- .../resources/reports/ragium/registries.json | 1 + .../ragium/common/item/RagiumItems.kt | 4 +++- 12 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/circuit_board.json create mode 100644 src/generated/resources/assets/ragium/models/item/circuit_board.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/circuit_board.json create mode 100644 src/generated/resources/data/ragium/recipe/assembling/electric_circuit_with_board.json diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 38fb95777..b242fb9a2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -133,6 +133,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.CRUDE_SILICON, "Crude Silicon") add(RagiumItems.SILICON_WAFER, "Silicon Wafer") add(RagiumItems.SILICON_CHIP, "Silicon Chip") + add(RagiumItems.CIRCUIT_BOARD, "Circuit Board") add(RagiumItems.ELECTRIC_CIRCUIT, "Electric Circuit") add(RagiumItems.ELDER_HEART, "Elder Heart") add(RagiumItems.WITHER_DOLL, "Wither Doll") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index d183bdba7..b6f8372e6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -129,6 +129,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.CRUDE_SILICON, "粗製シリコン") add(RagiumItems.SILICON_WAFER, "シリコンウェハ") add(RagiumItems.SILICON_CHIP, "シリコンチップ") + add(RagiumItems.CIRCUIT_BOARD, "回路基板") add(RagiumItems.ELECTRIC_CIRCUIT, "電子回路") add(RagiumItems.ELDER_HEART, "エルダーの心臓") add(RagiumItems.WITHER_DOLL, "ウィザー人形") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 6684026e8..27ada0fc8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -690,7 +690,23 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } }.save(exporter) - // Plastic + Circuit Chip + Gold Nugget -> Electric Circuit + // Plastic + Gold Dust -> Circuit Board + RagiumRecipeBuilders.alloying { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + extra { +dustOrIngot(RagiumMaterial.Metal.GOLD) } + result { +RagiumItems.CIRCUIT_BOARD } + }.save(exporter) + // Silicon Chip + Circuit Board -> Electric Circuit + RagiumRecipeBuilders.assembling { + ingredient { + items { +RagiumItems.SILICON_CHIP } + count = 2 + } + extra { items { +RagiumItems.CIRCUIT_BOARD } } + result { +RagiumItems.ELECTRIC_CIRCUIT } + recipeId suffix "_with_board" + }.save(exporter) + // Plastic + Silicon Chip + Gold Nugget -> Electric Circuit RagiumRecipeBuilders.assembling { ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } extra { diff --git a/src/generated/resources/assets/ragium/items/circuit_board.json b/src/generated/resources/assets/ragium/items/circuit_board.json new file mode 100644 index 000000000..8ee04d370 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/circuit_board.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/circuit_board" + } +} \ 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 482f16172..e051e5fed 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -225,6 +225,7 @@ "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", + "item.ragium.circuit_board": "Circuit Board", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_dust": "Coal Dust", "item.ragium.coal_tar_bucket": "Coal Tar Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index a359e9206..2d88c1658 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -225,6 +225,7 @@ "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", + "item.ragium.circuit_board": "回路基板", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", "item.ragium.coal_tar_bucket": "石炭タール入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/circuit_board.json b/src/generated/resources/assets/ragium/models/item/circuit_board.json new file mode 100644 index 000000000..7ab696f84 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/circuit_board.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/circuit_board" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json b/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json new file mode 100644 index 000000000..6b98f7f56 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/circuit_board.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": { + "neoforge:ingredient_type": "ragium:material_tags", + "tags": [ + "c:dusts/gold", + "c:ingots/gold" + ] + } + }, + "ingredient": { + "count": 1, + "items": "#c:plastics" + }, + "result": { + "count": 1, + "id": "ragium:circuit_board" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/assembling/electric_circuit_with_board.json b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit_with_board.json new file mode 100644 index 000000000..3e2ed2668 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/assembling/electric_circuit_with_board.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:assembling", + "extra": { + "count": 1, + "items": "ragium:circuit_board" + }, + "ingredient": { + "count": 2, + "items": "ragium:silicon_chip" + }, + "result": { + "count": 1, + "id": "ragium:electric_circuit" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json b/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json index ef25e139a..af4b457cb 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json +++ b/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json @@ -2,7 +2,10 @@ "type": "ragium:crushing", "ingredient": { "count": 1, - "items": "ragium:gypsum" + "items": [ + "ragium:gypsum", + "ragium:smooth_gypsum" + ] }, "result": { "count": 1, diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index fc8085e03..6e2209242 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -246,6 +246,7 @@ "chemical_machine_parts", "chemical_reactor", "chlorine_bucket", + "circuit_board", "coal_coke", "coal_coke_block", "coal_dust", diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 7a79b0d12..53d802092 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -42,7 +42,6 @@ data object RagiumItems { REGISTER.addAlias("steel_ingot", "sooty_iron_ingot") REGISTER.addAlias("steel_nugget", "sooty_iron_nugget") REGISTER.addAlias("coal_coke_dust", "carbon_dust") - REGISTER.addAlias("circuit_board", "cfrp_plate") REGISTER.addAlias("circuit_chip", "silicon_chip") eventBus.addListener(::registerCapabilities) @@ -194,6 +193,9 @@ data object RagiumItems { @JvmField val SILICON_CHIP: HTSimpleDeferredItem = REGISTER.registerSimpleItem("silicon_chip") + @JvmField + val CIRCUIT_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_board") + @JvmField val ELECTRIC_CIRCUIT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("electric_circuit") From 0afe34470431541d564ced87c184ba7b0e7fa218 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:14:56 +0900 Subject: [PATCH 27/38] =?UTF-8?q?feat:=20=E5=8C=96=E5=AD=A6=E7=89=A9?= =?UTF-8?q?=E8=B3=AA=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 + .../ragium/data/tag/RagiumBlockTagsProvider.kt | 6 +----- .../ragium/data/tag/RagiumItemTagsProvider.kt | 6 +----- .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/ragium/chemical/calcium_sulfate.json | 11 +++++++++++ .../resources/reports/ragium/registries.json | 1 + .../lib/registry/HTDecorationContent.kt | 17 +++++++++++++++++ .../ragium/api/data/chemical/RagiumChemicals.kt | 10 ++++++++++ .../ragium/api/material/RagiumMaterial.kt | 4 ++-- 11 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/generated/resources/data/ragium/ragium/chemical/calcium_sulfate.json diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index b242fb9a2..0d2175d71 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -264,6 +264,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "Potassium Nitrate") addFromKey(RagiumChemicals.CALCIUM_CARBONATE, "Calcium Carbonate") addFromKey(RagiumChemicals.CALCIUM_OXIDE, "Calcium Oxide") + addFromKey(RagiumChemicals.CALCIUM_SULFATE, "Calcium Sulfate") // Element addFromKey(RagiumElements.HYDROGEN, "Hydrogen") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index b6f8372e6..24d83913c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -260,6 +260,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.POTASSIUM_NITRATE, "硝酸カリウム") addFromKey(RagiumChemicals.CALCIUM_CARBONATE, "炭酸カルシウム") addFromKey(RagiumChemicals.CALCIUM_OXIDE, "酸化カルシウム") + addFromKey(RagiumChemicals.CALCIUM_SULFATE, "硫酸カルシウム") // Element addFromKey(RagiumElements.HYDROGEN, "水素") diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index 2d4d4a6fa..afba9cf4f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -38,10 +38,6 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yield(RagiumBlocks.CREATIVE_BATTERY) }.forEach(pickaxe::add) // Other - for ((_, slab, stairs, wall) in RagiumBlocks.ALL_DECORATIONS) { - builder(BlockTags.SLABS).add(slab) - stairs?.let(builder(BlockTags.STAIRS)::add) - wall?.let(builder(BlockTags.WALLS)::add) - } + RagiumBlocks.ALL_DECORATIONS.forEach { it.appendBlockTags(::builder) } } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index dfb9be62b..3646c524a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -55,11 +55,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(RagiumTags.Items.SOOTY_IRON_TOOL_MATERIALS) .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Alloy.SOOTY_IRON)) // Other - for ((_, slab, stairs, wall) in RagiumBlocks.ALL_DECORATIONS) { - builder(ItemTags.SLABS).add(slab) - stairs?.let { builder(ItemTags.STAIRS).add(it) } - wall?.let { builder(ItemTags.WALLS).add(it) } - } + RagiumBlocks.ALL_DECORATIONS.forEach { it.appendItemTags(::builder) } builder(ItemTags.PLANKS).add(RagiumItems.PARTICLE_BOARD) diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index e051e5fed..893b31d91 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -343,6 +343,7 @@ "ragium.chemical.ragium.aluminum_oxide": "Aluminum Oxide", "ragium.chemical.ragium.calcium_carbonate": "Calcium Carbonate", "ragium.chemical.ragium.calcium_oxide": "Calcium Oxide", + "ragium.chemical.ragium.calcium_sulfate": "Calcium Sulfate", "ragium.chemical.ragium.carbon": "Carbon", "ragium.chemical.ragium.carbonate": "Carbonate", "ragium.chemical.ragium.chlorine": "Chlorine", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 2d88c1658..d419cdaa0 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -343,6 +343,7 @@ "ragium.chemical.ragium.aluminum_oxide": "酸化アルミニウム", "ragium.chemical.ragium.calcium_carbonate": "炭酸カルシウム", "ragium.chemical.ragium.calcium_oxide": "酸化カルシウム", + "ragium.chemical.ragium.calcium_sulfate": "硫酸カルシウム", "ragium.chemical.ragium.carbon": "炭素", "ragium.chemical.ragium.carbonate": "炭酸塩", "ragium.chemical.ragium.chlorine": "塩素", diff --git a/src/generated/resources/data/ragium/ragium/chemical/calcium_sulfate.json b/src/generated/resources/data/ragium/ragium/chemical/calcium_sulfate.json new file mode 100644 index 000000000..6c2785052 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/calcium_sulfate.json @@ -0,0 +1,11 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:calcium" + }, + { + "chemical": "ragium:sulfate" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 6e2209242..3bf3118c7 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -554,6 +554,7 @@ "aluminum_oxide", "calcium_carbonate", "calcium_oxide", + "calcium_sulfate", "carbon", "carbonate", "chlorine", diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt index e8ece995f..789a0c022 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt @@ -1,6 +1,11 @@ package hiiragi283.lib.registry +import hiiragi283.lib.data.tag.HTTagBuilder import net.minecraft.resources.ResourceKey +import net.minecraft.tags.BlockTags +import net.minecraft.tags.ItemTags +import net.minecraft.tags.TagKey +import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.SlabBlock import net.minecraft.world.level.block.StairBlock @@ -60,4 +65,16 @@ data class HTDecorationContent( } val all: List get() = listOfNotNull(base, slab, stairs, wall) + + fun appendBlockTags(builder: (TagKey) -> HTTagBuilder) { + builder(BlockTags.SLABS).add(slab) + stairs?.let(builder(BlockTags.STAIRS)::add) + wall?.let(builder(BlockTags.WALLS)::add) + } + + fun appendItemTags(builder: (TagKey) -> HTTagBuilder) { + builder(ItemTags.SLABS).add(slab.item) + stairs?.item?.let(builder(ItemTags.STAIRS)::add) + wall?.item?.let(builder(ItemTags.WALLS)::add) + } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index df9816c4e..88c74005d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -127,6 +127,9 @@ data object RagiumChemicals { @JvmField val CALCIUM_OXIDE: ResourceKey = create("calcium_oxide") + @JvmField + val CALCIUM_SULFATE: ResourceKey = create("calcium_sulfate") + // Mixtures // @JvmStatic @@ -306,5 +309,12 @@ data object RagiumChemicals { add(RagiumElements.OXYGEN, 1) } ) + context.register( + CALCIUM_SULFATE, + HTCompoundChemical.build(context) { + add(RagiumElements.CALCIUM, 1) + add(SULFATE, 1) + } + ) } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index a2c92de6d..f6eb30642 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -77,12 +77,12 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - BAUXITE("Bauxite", "ボーキサイト"), + BAUXITE("Bauxite", "ボーキサイト", RagiumChemicals.ALUMINUM_OXIDE), /** * @since 26.1.8 */ - GYPSUM("Gypsum", "石膏"), + GYPSUM("Gypsum", "石膏", RagiumChemicals.CALCIUM_SULFATE), // Ragium RAGINITE("Raginite", "ラギナイト") From 6165e3b146fe0cbcf1da6d249983e38aebc622f6 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Wed, 30 Sep 2026 23:23:40 +0900 Subject: [PATCH 28/38] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E9=96=A2?= =?UTF-8?q?=E4=BF=82=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 6 +-- .../data/recipe/RagiumCommonRecipeProvider.kt | 17 +++---- ...om_solution.json => alumina_solution.json} | 0 ...pound_from_coal_tar.json => coal_tar.json} | 0 ...{fuel_from_naphtha.json => crude_oil.json} | 8 +-- .../data/ragium/recipe/refining/naphtha.json | 8 +-- ...t_from_salt_water.json => salt_water.json} | 0 ...on.json => sodium_hydroxide_solution.json} | 0 .../lib/collection/NonEmptyLists.kt | 2 +- .../lib/registry/HTDeferredHolder.kt | 15 ++++-- src/lib/kotlin/hiiragi283/lib/util/Ior.kt | 51 +++++++++++++++++++ .../recipe/builder/RTReactingRecipeBuilder.kt | 5 +- .../recipe/builder/RTRefiningRecipeBuilder.kt | 2 +- 13 files changed, 86 insertions(+), 28 deletions(-) rename src/generated/resources/data/ragium/recipe/refining/{alumina_dust_from_solution.json => alumina_solution.json} (100%) rename src/generated/resources/data/ragium/recipe/refining/{aromatic_compound_from_coal_tar.json => coal_tar.json} (100%) rename src/generated/resources/data/ragium/recipe/refining/{fuel_from_naphtha.json => crude_oil.json} (60%) rename src/generated/resources/data/ragium/recipe/refining/{salt_dust_from_salt_water.json => salt_water.json} (100%) rename src/generated/resources/data/ragium/recipe/refining/{sodium_carbonate_dust_from_solution.json => sodium_hydroxide_solution.json} (100%) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 175c78288..a25fbfac8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] minecraft = "26.1.2" -neo-moddev = "2.0.146" -neo-version = "26.1.2.109" +neo-moddev = "2.0.147" +neo-version = "26.1.2.112" kff-version = "6.3.0" kotlin = "2.4.0" @@ -16,7 +16,7 @@ mod-publish = "2.1.1" ae2 = "26.1.12-beta" curios = "15.0.0+26.1.2" jade = "26.1.10+neoforge" -jei = "29.37.0.100" +jei = "29.43.0.106" [libraries] diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 27ada0fc8..bb1c5f404 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -8,7 +8,6 @@ import hiiragi283.lib.data.recipe.builder.ingredient import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.RagiumAPI @@ -117,7 +116,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.AROMATIC_COMPOUND amount = 250 } - recipeId suffix "_from_coal_tar" + recipeId replace RagiumFluids.COAL_TAR.idOrThrow }.save(exporter) } @@ -150,6 +149,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu amount = 750 } itemResult { +RagiumItems.TAR } + recipeId replace RagiumFluids.CRUDE_OIL.idOrThrow }.save(exporter) // Naphtha -> Fuel + Sulfur @@ -160,7 +160,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumFluids.FUEL amount = 500 } - recipeId suffix "_from_naphtha" + recipeId replace RagiumFluids.NAPHTHA.idOrThrow }.save(exporter) // Naphtha -> Plastic RagiumRecipeBuilders.freezing { @@ -380,11 +380,8 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +Fluids.WATER amount *= 2 } - val dust: HTSimpleDeferredItem = - RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) - itemResult { +dust } - recipeId replace dust.idOrThrow - recipeId suffix "_from_solution" + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + recipeId replace RagiumFluids.NAOH_SOLUTION.idOrThrow }.save(exporter) // SiO2 + Na2CO3 -> Glass RagiumRecipeBuilders.alloying { @@ -436,7 +433,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } fluidResult { +Fluids.WATER } - recipeId replace id("alumina_dust_from_solution") + recipeId replace RagiumFluids.ALUMINA_SOLUTION.idOrThrow }.save(exporter) // Alumina Solution + HF aq -> Na3AlF6 RagiumRecipeBuilders.reacting { @@ -505,7 +502,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu ingredient { +holderSet(RagiumFluids.SALT_WATER) } fluidResult { +Fluids.WATER } itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) } - recipeId replace id("salt_dust_from_salt_water") + recipeId replace RagiumFluids.SALT_WATER.idOrThrow }.save(exporter) // 2x NaCl + H2SO4 -> 2x HCl + Na2SO4 diff --git a/src/generated/resources/data/ragium/recipe/refining/alumina_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/refining/alumina_solution.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/refining/alumina_dust_from_solution.json rename to src/generated/resources/data/ragium/recipe/refining/alumina_solution.json diff --git a/src/generated/resources/data/ragium/recipe/refining/aromatic_compound_from_coal_tar.json b/src/generated/resources/data/ragium/recipe/refining/coal_tar.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/refining/aromatic_compound_from_coal_tar.json rename to src/generated/resources/data/ragium/recipe/refining/coal_tar.json diff --git a/src/generated/resources/data/ragium/recipe/refining/fuel_from_naphtha.json b/src/generated/resources/data/ragium/recipe/refining/crude_oil.json similarity index 60% rename from src/generated/resources/data/ragium/recipe/refining/fuel_from_naphtha.json rename to src/generated/resources/data/ragium/recipe/refining/crude_oil.json index bdeb5228a..33908465e 100644 --- a/src/generated/resources/data/ragium/recipe/refining/fuel_from_naphtha.json +++ b/src/generated/resources/data/ragium/recipe/refining/crude_oil.json @@ -1,16 +1,16 @@ { "type": "ragium:refining", "fluid_result": { - "amount": 500, - "id": "ragium:fuel" + "amount": 750, + "id": "ragium:naphtha" }, "ingredient": { "amount": 1000, - "fluids": "#c:naphtha" + "fluids": "#c:crude_oil" }, "item_result": { "count": 1, - "id": "ragium:sulfur_dust" + "id": "ragium:tar" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/naphtha.json b/src/generated/resources/data/ragium/recipe/refining/naphtha.json index 33908465e..bdeb5228a 100644 --- a/src/generated/resources/data/ragium/recipe/refining/naphtha.json +++ b/src/generated/resources/data/ragium/recipe/refining/naphtha.json @@ -1,16 +1,16 @@ { "type": "ragium:refining", "fluid_result": { - "amount": 750, - "id": "ragium:naphtha" + "amount": 500, + "id": "ragium:fuel" }, "ingredient": { "amount": 1000, - "fluids": "#c:crude_oil" + "fluids": "#c:naphtha" }, "item_result": { "count": 1, - "id": "ragium:tar" + "id": "ragium:sulfur_dust" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json b/src/generated/resources/data/ragium/recipe/refining/salt_water.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/refining/salt_dust_from_salt_water.json rename to src/generated/resources/data/ragium/recipe/refining/salt_water.json diff --git a/src/generated/resources/data/ragium/recipe/refining/sodium_carbonate_dust_from_solution.json b/src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json similarity index 100% rename from src/generated/resources/data/ragium/recipe/refining/sodium_carbonate_dust_from_solution.json rename to src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json diff --git a/src/lib/kotlin/hiiragi283/lib/collection/NonEmptyLists.kt b/src/lib/kotlin/hiiragi283/lib/collection/NonEmptyLists.kt index 83d27257c..5d5965c29 100644 --- a/src/lib/kotlin/hiiragi283/lib/collection/NonEmptyLists.kt +++ b/src/lib/kotlin/hiiragi283/lib/collection/NonEmptyLists.kt @@ -19,7 +19,7 @@ fun nelOf(head: E, vararg tail: E): Nel = Nel(head, listOf(*tail)) * @author Hiiragi Tsubasa * @since 26.1.6 */ -fun E.toNel(): Nel = NonEmptyList(this) +fun E.nel(): Nel = NonEmptyList(this) // Iterable <-> Nel // diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt index 8997c70ec..ab2786b7d 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt @@ -1,8 +1,9 @@ package hiiragi283.lib.registry import hiiragi283.lib.resource.HTValueWithKey +import hiiragi283.lib.util.Either import hiiragi283.lib.util.Ior -import hiiragi283.lib.util.fold +import hiiragi283.lib.util.toIor import net.minecraft.core.TypedInstance import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey @@ -34,7 +35,13 @@ open class HTDeferredHolder : */ fun isOf(instance: TypedInstance): Boolean = this.isBound && instance.`is`(this) - final override fun unwrapWithKey(): Ior, T> = asOptional().fold({ - Ior.Left(this.key) - }, { Ior.Both(this.key, it) }) + /** + * @since 26.1.8 + */ + fun asEither(): Either = when { + this.isBound -> Either.Right(this.get()) + else -> Either.Left("Trying to access unbound value: $key") + } + + final override fun unwrapWithKey(): Ior, T> = asOptional().toIor { this.key } } diff --git a/src/lib/kotlin/hiiragi283/lib/util/Ior.kt b/src/lib/kotlin/hiiragi283/lib/util/Ior.kt index a0ace97ea..b1790f96b 100644 --- a/src/lib/kotlin/hiiragi283/lib/util/Ior.kt +++ b/src/lib/kotlin/hiiragi283/lib/util/Ior.kt @@ -2,6 +2,8 @@ package hiiragi283.lib.util +import hiiragi283.lib.collection.Nel +import hiiragi283.lib.collection.nel import java.util.Optional import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind @@ -214,3 +216,52 @@ sealed class Ior { */ data class Both(val leftValue: A, val rightValue: B) : Ior() } + +// Extensions // + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +inline fun Ior.getOrElse(default: (A) -> B): B { + contract { + callsInPlace(default, InvocationKind.AT_MOST_ONCE) + } + return when (this) { + is Ior.Both -> this.rightValue + is Ior.Left -> default(this.value) + is Ior.Right -> this.value + } +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +fun Pair.bothIor(): Ior = Ior.Both(this.first, this.second) + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +fun A.leftIor(): Ior = Ior.Left(this) + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +fun A.rightIor(): Ior = Ior.Right(this) + +// IorNel + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias IorNel = Ior, A> + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +fun Ior.toIorNel(): IorNel = this.mapLeft { it.nel() } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt index 173b4bb9e..dd27dd1a6 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt @@ -20,7 +20,10 @@ 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.fold( + HTItemResult::getId, + HTFluidResult::getId + ) { item: HTItemResult, fluid: HTFluidResult -> item.getId() ?: fluid.getId() } override fun createRecipe(): RTReactingRecipe.Basic = RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, results, progressData) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt index eed282273..a2a58a1e1 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt @@ -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? = null // Refining Recipe does not support default id override fun createRecipe(): RTRefiningRecipe = RTRefiningRecipe(ingredient, itemResult, fluidResult, progressData) From 1916c65217af142df01995e35a3cc82f9c0e9e17 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 20:25:54 +0900 Subject: [PATCH 29/38] =?UTF-8?q?refactor:=20HTItemOrFluidResult=20?= =?UTF-8?q?=E3=82=92=E5=B0=8E=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 4 +- .../integration/jei/RagiumJeiRecipeTypes.kt | 8 +- .../jei/category/RTReactingRecipeCategory.kt | 6 +- .../jei/category/RTRefiningRecipeCategory.kt | 43 ------- .../HTItemToItemAndFluidRecipeBuilder.kt | 87 ------------- .../HTSingleToItemAndFluidRecipeBuilder.kt | 121 ++++++++++++++++++ .../lib/recipe/base/HTBasicSingleRecipe.kt | 13 ++ .../lib/recipe/base/HTFluidToRecipe.kt | 46 +++++++ .../recipe/base/HTItemToItemAndFluidRecipe.kt | 75 ----------- .../lib/recipe/base/HTItemToRecipe.kt | 42 ++++++ .../lib/recipe/result/HTItemAndFluidResult.kt | 53 -------- .../lib/recipe/result/HTItemAndFluidStack.kt | 20 +++ .../lib/recipe/result/HTItemOrFluidResult.kt | 41 ++++++ .../hiiragi283/lib/registry/HTDeferredItem.kt | 8 +- .../hiiragi283/lib/registry/HTFluidContent.kt | 6 +- .../recipe/builder/RTReactingRecipeBuilder.kt | 18 ++- .../recipe/builder/RTRefiningRecipeBuilder.kt | 66 ---------- .../recipe/builder/RagiumRecipeBuilders.kt | 8 +- .../ragium/api/recipe/RTDrainingRecipe.kt | 13 +- .../ragium/api/recipe/RTPyrolyzingRecipe.kt | 13 +- .../ragium/api/recipe/RTReactingRecipe.kt | 23 ++-- .../ragium/api/recipe/RTRefiningRecipe.kt | 67 ++-------- .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 +- .../HTFluidToItemAndFluidRecipeCategory.kt | 51 ++++++++ .../HTItemToItemAndFluidRecipeCategory.kt | 20 +-- .../hiiragi283/ragium/common/RagiumCommon.kt | 1 + .../recipe/RTPotionBottleDrainingRecipe.kt | 4 +- 27 files changed, 401 insertions(+), 459 deletions(-) delete mode 100644 src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTRefiningRecipeCategory.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleToItemAndFluidRecipeBuilder.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToItemAndFluidRecipe.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidResult.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidStack.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemOrFluidResult.kt delete mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt create mode 100644 src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.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 2d73a2929..0b8e9fdf0 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -3,6 +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.HTFluidToItemAndFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToDoubleItemRecipeCategory @@ -24,7 +25,6 @@ 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.client.integration.jei.category.RTResourceExtractingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTWashingRecipeCategory import hiiragi283.ragium.common.block.RagiumBlocks @@ -120,7 +120,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), - RTRefiningRecipeCategory(guiHelper), + HTFluidToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.REFINING), // Chemical HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BATHING), RTElectrolyzingRecipeCategory(guiHelper), 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 f3a83b664..c50c68a1e 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -6,13 +6,11 @@ import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe -import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe -import hiiragi283.ragium.api.recipe.RTRefiningRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe import hiiragi283.ragium.api.recipe.RTWashingRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeTypes @@ -37,7 +35,7 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.CUTTING, RagiumBlocks.CUTTING_MACHINE) @JvmField - val DRAINING: HTHolderJeiRecipeType = + val DRAINING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.DRAINING, RagiumBlocks.MACHINE_CASING) @JvmField @@ -58,11 +56,11 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.MELTING, RagiumBlocks.MELTER) @JvmField - val PYROLYZING: HTHolderJeiRecipeType = + val PYROLYZING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) @JvmField - val REFINING: HTHolderJeiRecipeType = + val REFINING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumBlocks.REFINERY) // Chemical 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 0d8276847..b91f15c79 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 @@ -3,8 +3,6 @@ package hiiragi283.ragium.client.integration.jei.category import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes import mezz.jei.api.gui.builder.IRecipeLayoutBuilder @@ -32,15 +30,13 @@ class RTReactingRecipeCategory(guiHelper: IGuiHelper) : .add(recipe.secondary) .setSlotBackground(HTBackgroundType.EXTRA_INPUT) // outputs - val (itemResult: HTItemResult?, fluidResult: HTFluidResult?) = recipe.results.toPair() val fluidOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(5), getPosition(0)) .setSlotBackground(HTBackgroundType.OUTPUT) val itemOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(7), getPosition(0)) .setSlotBackground(HTBackgroundType.OUTPUT) - fluidResult?.let(fluidOutput::add) - itemResult?.let(itemOutput::add) + recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) } override fun setupRecipeExtras( diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTRefiningRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTRefiningRecipeCategory.kt deleted file mode 100644 index d14512efe..000000000 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTRefiningRecipeCategory.kt +++ /dev/null @@ -1,43 +0,0 @@ -package hiiragi283.ragium.client.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory -import hiiragi283.ragium.api.recipe.RTRefiningRecipe -import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.builder.IRecipeSlotBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class RTRefiningRecipeCategory(guiHelper: IGuiHelper) : - HTHolderRecipeCategory( - guiHelper, - RagiumJeiRecipeTypes.REFINING, - 18 * 6, - 18 * 1, - RTRefiningRecipe.CODEC - ) { - override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RTRefiningRecipe, focuses: IFocusGroup) { - // inputs - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // outputs - builder - .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.fluidResult) - .setSlotBackground(HTBackgroundType.OUTPUT) - val itemOutput: IRecipeSlotBuilder = builder - .addOutputSlot(getPosition(5), getPosition(0)) - .setSlotBackground(HTBackgroundType.OUTPUT) - recipe.itemResult.ifPresent(itemOutput::add) - } - - override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTRefiningRecipe, focuses: IFocusGroup) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - builder.addRecipePlus(getPosition(4)) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt deleted file mode 100644 index 47df2096a..000000000 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemToItemAndFluidRecipeBuilder.kt +++ /dev/null @@ -1,87 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -package hiiragi283.lib.data.recipe.builder - -import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder -import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder -import hiiragi283.lib.data.recipe.result.HTItemResultBuilder -import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.util.HTDelegates -import net.minecraft.resources.Identifier -import net.minecraft.world.item.crafting.Recipe -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -/** - * 1種類のアイテムから1種類のアイテムと液体を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -class HTItemToItemAndFluidRecipeBuilder>(prefix: String, private val factory: Factory) : - HTProgressRecipeBuilder(prefix) { - override fun getRecipeId(): Identifier? = itemResult.getId() ?: fluidResult.getId() - - override fun createRecipe(): RECIPE = factory.create(ingredient, itemResult, fluidResult, 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 itemResult: HTItemResult by HTDelegates.onceInitialize() - - @PublishedApi internal var fluidResult: HTFluidResult by HTDelegates.onceInitialize() - - operator fun HTItemResult.unaryPlus() { - itemResult = this - } - - operator fun HTFluidResult.unaryPlus() { - fluidResult = this - } - - inline fun itemResult(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - - inline fun fluidResult(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } - - // Factory // - - /** - * @param RECIPE 生成するレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - fun interface Factory { - fun create( - ingredient: HTItemIngredient, - itemResult: HTItemResult, - fluidResult: HTFluidResult, - progressData: HTProgressData - ): RECIPE - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleToItemAndFluidRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleToItemAndFluidRecipeBuilder.kt new file mode 100644 index 000000000..42c3e6bf7 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTSingleToItemAndFluidRecipeBuilder.kt @@ -0,0 +1,121 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.recipe.builder + +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.base.HTBasicSingleRecipe +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemOrFluidResult +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.util.HTDelegates +import hiiragi283.lib.util.Ior +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Recipe +import java.util.Optional +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * 1種類の材料から1種類アイテムと液体の完成品を作成するレシピ向けの[HTProgressRecipeBuilder]の実装クラスです。 + * @param ING レシピの材料を判定するクラス + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +class HTSingleToItemAndFluidRecipeBuilder, out RECIPE : Recipe<*>>( + prefix: String, + private val factory: HTBasicSingleRecipe.Factory +) : HTProgressRecipeBuilder(prefix) { + override fun getRecipeId(): Identifier? = result.getId() + + override fun createRecipe(): RECIPE = factory.create(ingredient, result, progressData) + + // Ingredient + var ingredient: ING by HTDelegates.onceInitialize() + + operator fun ING.unaryPlus() { + ingredient = this + } + + // Results + var itemResult: Optional by HTDelegates.optionalInitialize() + + var fluidResult: Optional by HTDelegates.optionalInitialize() + + val result: HTItemOrFluidResult get() = Ior.fromNullable(itemResult, fluidResult) + .map(::HTItemOrFluidResult) + .orElseThrow { error("Either item or fluid result required") } + + operator fun HTItemResult.unaryPlus() { + itemResult = Optional.of(this) + } + + operator fun HTFluidResult.unaryPlus() { + fluidResult = Optional.of(this) + } + + inline fun itemResult(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemResultBuilder.build(builderAction) + } + + inline fun fluidResult(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidResultBuilder.build(builderAction) + } +} + +// Extensions // + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToItemAndFluidRecipeBuilder = HTSingleToItemAndFluidRecipeBuilder + +/** + * @param RECIPE 生成するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToItemAndFluidRecipeBuilder = HTSingleToItemAndFluidRecipeBuilder + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("itemIngredient") +fun HTSingleToItemAndFluidRecipeBuilder.ingredient( + builderAction: HTFluidIngredientBuilder.() -> Unit +) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) +} + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmName("fluidIngredient") +fun HTSingleToItemAndFluidRecipeBuilder.ingredient( + builderAction: HTItemIngredientBuilder.() -> Unit +) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt index 8163d9da3..3aa010a53 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTBasicSingleRecipe.kt @@ -37,6 +37,19 @@ open class HTBasicSingleRecipe, RE ).apply(instance, factory::create) } + @JvmStatic + fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> codec( + ingredient: Codec, + result: MapCodec, + factory: Factory + ): MapCodec = HTCodecs.recordMap { instance -> + instance.group( + ingredient.fieldOf(HTConstants.INGREDIENT).forGetter { it.ingredient }, + result.forGetter { it.result }, + HTProgressData.CODEC.forGetter { it.progressData } + ).apply(instance, factory::create) + } + @JvmStatic fun , RES : HTRecipeResult<*>, RECIPE : HTBasicSingleRecipe<*, ING, RES>> streamCodec( ingredient: StreamCodec, diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt index 86e54f0ee..f577b4699 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTFluidToRecipe.kt @@ -4,6 +4,8 @@ import com.mojang.serialization.MapCodec import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemAndFluidStack +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import hiiragi283.lib.recipe.result.HTItemResult import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec @@ -25,6 +27,13 @@ typealias HTFluidToFluidRecipe = HTFluidToRecipe */ typealias HTFluidToItemRecipe = HTFluidToRecipe +/** + * 1種類の液体から1種類のアイテムと液体を作成するレシピを表すインターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTFluidToItemAndFluidRecipe = HTFluidToRecipe + /** * 1種類の液体から1種類の完成品を作成するレシピを表すインターフェースです。 * @author Hiiragi Tsubasa @@ -102,4 +111,41 @@ interface HTFluidToRecipe : override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) } + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class BasicItemAndFluid( + ingredient: HTFluidIngredient, + result: HTItemOrFluidResult, + progressData: HTProgressData + ) : HTBasicSingleRecipe( + ingredient, + result, + progressData + ), + HTFluidToRecipe { + companion object { + @JvmStatic + fun codec( + factory: Factory + ): MapCodec = codec(HTFluidIngredient.CODEC, HTItemOrFluidResult.CODEC, factory) + + @JvmStatic + fun streamCodec( + factory: Factory + ): StreamCodec = + streamCodec(HTFluidIngredient.STREAM_CODEC, HTItemOrFluidResult.STREAM_CODEC, factory) + + @JvmField + val SIMPLE_CODEC: MapCodec = codec(::BasicItemAndFluid) + } + + override fun test(input: FluidInstance): Boolean = ingredient.test(input) + + override fun apply(input: FluidInstance): HTItemAndFluidStack = result.create() + + override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) + } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToItemAndFluidRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToItemAndFluidRecipe.kt deleted file mode 100644 index 18400bbb1..000000000 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToItemAndFluidRecipe.kt +++ /dev/null @@ -1,75 +0,0 @@ -package hiiragi283.lib.recipe.base - -import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemAndFluidResult -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.serialization.codec.HTCodecs -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec -import net.minecraft.world.item.ItemInstance -import net.minecraft.world.item.crafting.SingleRecipeInput - -/** - * 1種類のアイテムから1種類のアイテムと液体を作成するレシピを表すインターフェースです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -interface HTItemToItemAndFluidRecipe : - HTRecipePredicates.SingleItem, - HTRecipeFactories.SingleItemTo, - HTProgressRecipe { - - /** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ - open class Basic( - val ingredient: HTItemIngredient, - val itemResult: HTItemResult, - val fluidResult: HTFluidResult, - override val progressData: HTProgressData - ) : HTItemToItemAndFluidRecipe, - HTProgressRecipe.Simple { - companion object { - @JvmStatic - fun codec( - factory: (HTItemIngredient, HTItemResult, HTFluidResult, HTProgressData) -> RECIPE - ): MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTItemIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(Basic::ingredient), - HTItemResult.CODEC.fieldOf(HTConstants.ITEM_RESULT).forGetter(Basic::itemResult), - HTFluidResult.CODEC.fieldOf(HTConstants.FLUID_RESULT).forGetter(Basic::fluidResult), - HTProgressData.CODEC.forGetter(Basic::progressData) - ).apply(instance, factory) - } - - @JvmField - val SIMPLE_CODEC: MapCodec = codec(::Basic) - - @JvmStatic - fun streamCodec( - factory: (HTItemIngredient, HTItemResult, HTFluidResult, HTProgressData) -> RECIPE - ): StreamCodec = StreamCodec.composite( - HTItemIngredient.STREAM_CODEC, - Basic::ingredient, - HTItemResult.STREAM_CODEC, - Basic::itemResult, - HTFluidResult.STREAM_CODEC, - Basic::fluidResult, - HTProgressData.STREAM_CODEC, - Basic::progressData, - factory - ) - } - - override fun test(input: ItemInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) - - override fun apply(input: ItemInstance): HTItemAndFluidResult = - HTItemAndFluidResult(itemResult.create(), fluidResult.create()) - } -} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt index 807caf0d5..56a3913d0 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTItemToRecipe.kt @@ -3,6 +3,8 @@ package hiiragi283.lib.recipe.base import com.mojang.serialization.MapCodec import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemAndFluidStack +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import hiiragi283.lib.recipe.result.HTItemResult import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec @@ -25,6 +27,13 @@ typealias HTItemToFluidRecipe = HTItemToRecipe */ typealias HTItemToItemRecipe = HTItemToRecipe +/** + * 1種類のアイテムから1種類のアイテムと液体を作成するレシピを表すインターフェースです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTItemToItemAndFluidRecipe = HTItemToRecipe + /** * 1種類のアイテムから1種類の完成品を作成するレシピを表すインターフェースです。 * @author Hiiragi Tsubasa @@ -97,4 +106,37 @@ interface HTItemToRecipe : override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) } + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class BasicItemAndFluid( + ingredient: HTItemIngredient, + result: HTItemOrFluidResult, + progressData: HTProgressData + ) : HTBasicSingleRecipe(ingredient, result, progressData), + HTItemToRecipe { + companion object { + @JvmStatic + fun codec( + factory: Factory + ): MapCodec = codec(HTItemIngredient.CODEC, HTItemOrFluidResult.CODEC, factory) + + @JvmStatic + fun streamCodec( + factory: Factory + ): StreamCodec = + streamCodec(HTItemIngredient.STREAM_CODEC, HTItemOrFluidResult.STREAM_CODEC, factory) + + @JvmField + val SIMPLE_CODEC: MapCodec = codec(::BasicItemAndFluid) + } + + override fun test(input: ItemInstance): Boolean = ingredient.test(input) + + override fun apply(input: ItemInstance): HTItemAndFluidStack = result.create() + + override fun getMatchingStack(input: ItemInstance): ItemInstance = ingredient.getMatchingStack(input) + } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidResult.kt deleted file mode 100644 index 6fb8172e3..000000000 --- a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidResult.kt +++ /dev/null @@ -1,53 +0,0 @@ -package hiiragi283.lib.recipe.result - -import hiiragi283.lib.util.Ior -import net.minecraft.world.item.ItemStack -import net.neoforged.neoforge.fluids.FluidStack -import java.util.Objects - -/** - * アイテムと液体の完成品を保持するクラスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@JvmRecord -data class HTItemAndFluidResult(val item: ItemStack, val fluid: FluidStack) { - companion object { - /** - * @since 26.1.7 - */ - @JvmStatic - fun from(result: HTItemResult?): HTItemAndFluidResult = - HTItemAndFluidResult(result.createOrEmpty(), FluidStack.EMPTY) - - /** - * @since 26.1.7 - */ - @JvmStatic - fun from(result: HTFluidResult?): HTItemAndFluidResult = - HTItemAndFluidResult(ItemStack.EMPTY, result.createOrEmpty()) - - /** - * @since 26.1.7 - */ - @JvmStatic - fun from(item: HTItemResult?, fluid: HTFluidResult?): HTItemAndFluidResult = - HTItemAndFluidResult(item.createOrEmpty(), fluid.createOrEmpty()) - - /** - * @since 26.1.7 - */ - @JvmStatic - fun from(results: Ior): HTItemAndFluidResult { - val (item: HTItemResult?, fluid: HTFluidResult?) = results.toPair() - return from(item, fluid) - } - } - - override fun equals(other: Any?): Boolean = (other as? HTItemAndFluidResult)?.let { - ItemStack.isSameItemSameComponents(it.item, this.item) && FluidStack.isSameFluid(it.fluid, this.fluid) - } ?: false - - override fun hashCode(): Int = - Objects.hash(ItemStack.hashItemAndComponents(item), FluidStack.hashFluidAndComponents(fluid)) -} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidStack.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidStack.kt new file mode 100644 index 000000000..1f08b9853 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemAndFluidStack.kt @@ -0,0 +1,20 @@ +package hiiragi283.lib.recipe.result + +import net.minecraft.world.item.ItemStack +import net.neoforged.neoforge.fluids.FluidStack +import java.util.Objects + +/** + * アイテムと液体の完成品をまとめたクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.0 + */ +@JvmRecord +data class HTItemAndFluidStack(val item: ItemStack, val fluid: FluidStack) { + override fun equals(other: Any?): Boolean = (other as? HTItemAndFluidStack)?.let { + ItemStack.isSameItemSameComponents(it.item, this.item) && FluidStack.isSameFluid(it.fluid, this.fluid) + } ?: false + + override fun hashCode(): Int = + Objects.hash(ItemStack.hashItemAndComponents(item), FluidStack.hashFluidAndComponents(fluid)) +} diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemOrFluidResult.kt b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemOrFluidResult.kt new file mode 100644 index 000000000..07d26b5fd --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/result/HTItemOrFluidResult.kt @@ -0,0 +1,41 @@ +package hiiragi283.lib.recipe.result + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.network.HTStreamCodecs +import hiiragi283.lib.util.Ior +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.resources.Identifier + +/** + * アイテムまたは液体の完成品を保持するクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTItemOrFluidResult(val content: Ior) : HTRecipeResult { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.ior( + HTItemResult.CODEC.fieldOf(HTConstants.ITEM_RESULT), + HTFluidResult.CODEC.fieldOf(HTConstants.FLUID_RESULT) + ).xmap(::HTItemOrFluidResult, HTItemOrFluidResult::content) + + @JvmField + val STREAM_CODEC: StreamCodec = HTStreamCodecs + .ior(HTItemResult.STREAM_CODEC, HTFluidResult.STREAM_CODEC) + .map(::HTItemOrFluidResult, HTItemOrFluidResult::content) + } + + override fun getId(): Identifier? = content.fold( + HTItemResult::getId, + HTFluidResult::getId + ) { item: HTItemResult, fluid: HTFluidResult -> item.getId() ?: fluid.getId() } + + override fun create(): HTItemAndFluidStack { + val (item: HTItemResult?, fluid: HTFluidResult?) = content.toPair() + return HTItemAndFluidStack(item.createOrEmpty(), fluid.createOrEmpty()) + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt index 13b46717c..9742692d7 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt @@ -12,7 +12,6 @@ import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStackTemplate import net.minecraft.world.level.ItemLike -import kotlin.jvm.optionals.getOrNull /** * シンプルな[HTDeferredItem]のエイリアスです。 @@ -43,9 +42,10 @@ class HTDeferredItem : override fun asItem(): ITEM = get() - override fun toTemplate(count: Int, patch: DataComponentPatch): ItemStackTemplate? = asOptional().map { - ItemStackTemplate(it, count, patch) - }.getOrNull() + override fun toTemplate(count: Int, patch: DataComponentPatch): ItemStackTemplate? = when { + this.isAir -> null + else -> asEither().map { ItemStackTemplate(it, count, patch) }.getOrNull() + } override fun toStack(count: Int, patch: DataComponentPatch): ItemStack = when { this.isBound -> ItemStack(this, count, patch) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTFluidContent.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTFluidContent.kt index bc0fc653c..b58d04898 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTFluidContent.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTFluidContent.kt @@ -44,8 +44,10 @@ sealed class HTFluidContent( /** * 新しい[FluidStackTemplate]のインスタンスを作成します。 */ - override fun toTemplate(amount: Int, patch: DataComponentPatch): FluidStackTemplate? = - sourceHolder.getOrNull()?.let { FluidStackTemplate(it, amount, patch) } + override fun toTemplate(amount: Int, patch: DataComponentPatch): FluidStackTemplate? = when { + sourceHolder.isEmpty -> null + else -> sourceHolder.asEither().map { FluidStackTemplate(it, amount, patch) }.getOrNull() + } /** * 新しい[FluidStack]のインスタンスを作成します。 diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt index dd27dd1a6..29c0b75dd 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTReactingRecipeBuilder.kt @@ -8,6 +8,7 @@ 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.HTItemOrFluidResult import hiiragi283.lib.recipe.result.HTItemResult import hiiragi283.lib.util.HTDelegates import hiiragi283.lib.util.Ior @@ -20,13 +21,10 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class RTReactingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REACTING) { - override fun getRecipeId(): Identifier? = results.fold( - HTItemResult::getId, - HTFluidResult::getId - ) { item: HTItemResult, fluid: HTFluidResult -> item.getId() ?: fluid.getId() } + override fun getRecipeId(): Identifier? = result.getId() override fun createRecipe(): RTReactingRecipe.Basic = - RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, results, progressData) + RTReactingRecipe.Basic(primaryIngredient, secondaryIngredient, result, progressData) // Ingredient var primaryIngredient: HTFluidIngredient by HTDelegates.onceInitialize() @@ -48,13 +46,13 @@ class RTReactingRecipeBuilder : HTProgressRecipeBuilder( } // Result - @PublishedApi internal var itemResult: Optional by HTDelegates.optionalInitialize() + var itemResult: Optional by HTDelegates.optionalInitialize() - @PublishedApi internal var fluidResult: Optional by HTDelegates.optionalInitialize() + var fluidResult: Optional by HTDelegates.optionalInitialize() - private val results: Ior by lazy { - Ior.fromNullable(itemResult, fluidResult).orElseThrow { error("Either item or fluid result required") } - } + val result: HTItemOrFluidResult get() = Ior.fromNullable(itemResult, fluidResult) + .map(::HTItemOrFluidResult) + .orElseThrow { error("Either item or fluid result required") } operator fun HTItemResult.unaryPlus() { itemResult = Optional.of(this) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt deleted file mode 100644 index a2a58a1e1..000000000 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTRefiningRecipeBuilder.kt +++ /dev/null @@ -1,66 +0,0 @@ -@file:OptIn(ExperimentalContracts::class) - -package hiiragi283.ragium.api.data.recipe.builder - -import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder -import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder -import hiiragi283.lib.data.recipe.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 -import hiiragi283.lib.util.HTDelegates -import hiiragi283.ragium.api.RagiumConstants -import hiiragi283.ragium.api.recipe.RTRefiningRecipe -import net.minecraft.resources.Identifier -import java.util.Optional -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -class RTRefiningRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.REFINING) { - override fun getRecipeId(): Identifier? = null // Refining Recipe does not support default id - - override fun createRecipe(): RTRefiningRecipe = RTRefiningRecipe(ingredient, itemResult, fluidResult, progressData) - - // Ingredient - @PublishedApi internal var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() - - operator fun HTFluidIngredient.unaryPlus() { - ingredient = this - } - - inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidIngredientBuilder.build(builderAction) - } - - // Result - @PublishedApi internal var itemResult: Optional by HTDelegates.optionalInitialize() - - @PublishedApi internal var fluidResult: HTFluidResult by HTDelegates.onceInitialize() - - operator fun HTItemResult.unaryPlus() { - itemResult = Optional.of(this) - } - - operator fun HTFluidResult.unaryPlus() { - fluidResult = this - } - - inline fun itemResult(builderAction: HTItemResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTItemResultBuilder.build(builderAction) - } - - inline fun fluidResult(builderAction: HTFluidResultBuilder.() -> Unit) { - contract { - callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) - } - +HTFluidResultBuilder.build(builderAction) - } -} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 63e983c21..01cd1c821 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -3,6 +3,7 @@ package hiiragi283.ragium.api.data.recipe.builder import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder +import hiiragi283.lib.data.recipe.builder.HTFluidToItemAndFluidRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTFluidToItemRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder @@ -28,6 +29,7 @@ import hiiragi283.ragium.api.recipe.RTMeltingRecipe import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTPlantingRecipe import hiiragi283.ragium.api.recipe.RTPyrolyzingRecipe +import hiiragi283.ragium.api.recipe.RTRefiningRecipe import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -141,11 +143,13 @@ data object RagiumRecipeBuilders { } @JvmStatic - inline fun refining(builderAction: RTRefiningRecipeBuilder.() -> Unit): RTRefiningRecipeBuilder { + inline fun refining( + builderAction: HTFluidToItemAndFluidRecipeBuilder.() -> Unit + ): HTFluidToItemAndFluidRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return RTRefiningRecipeBuilder().apply(builderAction) + return HTFluidToItemAndFluidRecipeBuilder(RagiumConstants.REFINING, ::RTRefiningRecipe).apply(builderAction) } // Chemical diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt index f15d0ed86..3fe341a73 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt @@ -2,20 +2,15 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.SingleRecipeInput -class RTDrainingRecipe( - ingredient: HTItemIngredient, - itemResult: HTItemResult, - fluidResult: HTFluidResult, - progressData: HTProgressData -) : HTItemToItemAndFluidRecipe.Basic(ingredient, itemResult, fluidResult, progressData), +class RTDrainingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : + HTItemToRecipe.BasicItemAndFluid(ingredient, result, progressData), HTSerializableRecipe { companion object { @JvmField diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt index d50b9956f..0a1cd32a8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt @@ -2,20 +2,15 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.ingredient.HTItemIngredient -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.SingleRecipeInput -class RTPyrolyzingRecipe( - ingredient: HTItemIngredient, - itemResult: HTItemResult, - fluidResult: HTFluidResult, - progressData: HTProgressData -) : HTItemToItemAndFluidRecipe.Basic(ingredient, itemResult, fluidResult, progressData), +class RTPyrolyzingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : + HTItemToRecipe.BasicItemAndFluid(ingredient, result, progressData), HTSerializableRecipe { companion object { @JvmField diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt index 7f71ef89f..5156b04ca 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt @@ -10,12 +10,9 @@ import hiiragi283.lib.recipe.base.HTRecipeFactories import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTFluidRecipeInput -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemAndFluidResult -import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.recipe.result.HTItemAndFluidStack +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import hiiragi283.lib.util.Ior import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.crafting.RecipeSerializer @@ -23,14 +20,14 @@ import net.neoforged.neoforge.fluids.FluidInstance interface RTReactingRecipe : HTRecipePredicates.DoubleFluid, - HTRecipeFactories.DoubleFluid, + HTRecipeFactories.DoubleFluid, HTProgressRecipe { @JvmRecord data class Basic( val primary: HTFluidIngredient, val secondary: HTFluidIngredient, - val results: Ior, + val result: HTItemOrFluidResult, override val progressData: HTProgressData ) : RTReactingRecipe, HTProgressRecipe.Simple, @@ -41,10 +38,7 @@ interface RTReactingRecipe : instance.group( HTFluidIngredient.CODEC.fieldOf(HTConstants.PRIMARY_INGREDIENT).forGetter(Basic::primary), HTFluidIngredient.CODEC.fieldOf(HTConstants.SECONDARY_INGREDIENT).forGetter(Basic::secondary), - HTCodecs.ior( - HTItemResult.CODEC.fieldOf(HTConstants.ITEM_RESULT), - HTFluidResult.CODEC.fieldOf(HTConstants.FLUID_RESULT) - ).forGetter(Basic::results), + HTItemOrFluidResult.CODEC.forGetter(Basic::result), HTProgressData.CODEC.forGetter(Basic::progressData) ).apply(instance, ::Basic) } @@ -55,8 +49,8 @@ interface RTReactingRecipe : Basic::primary, HTFluidIngredient.STREAM_CODEC, Basic::secondary, - HTStreamCodecs.ior(HTItemResult.STREAM_CODEC, HTFluidResult.STREAM_CODEC), - Basic::results, + HTItemOrFluidResult.STREAM_CODEC, + Basic::result, HTProgressData.STREAM_CODEC, Basic::progressData, ::Basic @@ -69,8 +63,7 @@ interface RTReactingRecipe : override fun test(first: FluidInstance, second: FluidInstance): Boolean = primary.test(first) && secondary.test(second) - override fun apply(first: FluidInstance, second: FluidInstance): HTItemAndFluidResult = - HTItemAndFluidResult.from(results) + override fun apply(first: FluidInstance, second: FluidInstance): HTItemAndFluidStack = result.create() override fun getMatchingStack(first: FluidInstance, second: FluidInstance): Pair = primary.getMatchingStack(first) to secondary.getMatchingStack(second) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt index 0a1798c58..a63c9c2e9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt @@ -1,75 +1,24 @@ package hiiragi283.ragium.api.recipe -import com.mojang.serialization.MapCodec -import hiiragi283.lib.HTConstants +import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe +import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData -import hiiragi283.lib.recipe.base.HTProgressRecipe -import hiiragi283.lib.recipe.base.HTRecipeFactories -import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput -import hiiragi283.lib.recipe.result.HTFluidResult -import hiiragi283.lib.recipe.result.HTItemAndFluidResult -import hiiragi283.lib.recipe.result.HTItemResult -import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.serialization.network.HTStreamCodecs -import hiiragi283.lib.util.fold -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.network.codec.StreamCodec +import hiiragi283.lib.recipe.result.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer -import net.minecraft.world.item.crafting.RecipeType -import net.neoforged.neoforge.fluids.FluidInstance -import java.util.Optional -@JvmRecord -data class RTRefiningRecipe( - val ingredient: HTFluidIngredient, - val itemResult: Optional, - val fluidResult: HTFluidResult, - override val progressData: HTProgressData -) : HTRecipePredicates.SingleFluid, - HTRecipeFactories.SingleFluidTo, - HTProgressRecipe.Simple, +class RTRefiningRecipe(ingredient: HTFluidIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : + HTFluidToRecipe.BasicItemAndFluid(ingredient, result, progressData), HTSerializableRecipe { companion object { @JvmField - val CODEC: MapCodec = HTCodecs.recordMap { instance -> - instance.group( - HTFluidIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(RTRefiningRecipe::ingredient), - HTItemResult.CODEC.optionalFieldOf(HTConstants.ITEM_RESULT).forGetter(RTRefiningRecipe::itemResult), - HTFluidResult.CODEC.fieldOf(HTConstants.FLUID_RESULT).forGetter(RTRefiningRecipe::fluidResult), - HTProgressData.CODEC.forGetter(RTRefiningRecipe::progressData) - ).apply(instance, ::RTRefiningRecipe) - } - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.composite( - HTFluidIngredient.STREAM_CODEC, - RTRefiningRecipe::ingredient, - HTStreamCodecs.optional(HTItemResult.STREAM_CODEC), - RTRefiningRecipe::itemResult, - HTFluidResult.STREAM_CODEC, - RTRefiningRecipe::fluidResult, - HTProgressData.STREAM_CODEC, - RTRefiningRecipe::progressData, - ::RTRefiningRecipe - ) - - @JvmField - val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + val SERIALIZER: RecipeSerializer = + RecipeSerializer(codec(::RTRefiningRecipe), streamCodec(::RTRefiningRecipe)) } - override fun test(input: FluidInstance): Boolean = ingredient.test(input) - - override fun getMatchingStack(input: FluidInstance): FluidInstance = ingredient.getMatchingStack(input) - - override fun apply(input: FluidInstance): HTItemAndFluidResult = itemResult.fold( - { HTItemAndFluidResult.from(fluidResult) }, - { HTItemAndFluidResult.from(it, fluidResult) } - ) - override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.REFINING - override fun getType(): RecipeType = RagiumRecipeTypes.REFINING + override fun getType(): HTRecipeType = RagiumRecipeTypes.REFINING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 5ae523a5a..92c929966 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe +import hiiragi283.lib.recipe.base.HTFluidToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -65,7 +66,7 @@ data object RagiumRecipeLookups { val PYROLYZING: HTCompoundRecipeLookup = create(RagiumConstants.PYROLYZING) @JvmField - val REFINING: HTRecipeLookup = create(RagiumRecipeTypes.REFINING) + val REFINING: HTCompoundRecipeLookup = create(RagiumConstants.REFINING) // Chemical @JvmField diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt new file mode 100644 index 000000000..a3f1a0b00 --- /dev/null +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt @@ -0,0 +1,51 @@ +package hiiragi283.lib.integration.jei.category + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTFluidToRecipe +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class HTFluidToItemAndFluidRecipeCategory( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType +) : HTHolderRecipeCategory( + guiHelper, + recipeType, + 18 * 6, + 18 * 1, + HTFluidToRecipe.BasicItemAndFluid.SIMPLE_CODEC +) { + override fun setupRecipe( + builder: IRecipeLayoutBuilder, + recipe: HTFluidToRecipe.BasicItemAndFluid, + focuses: IFocusGroup + ) { + // input + builder + .addInputSlot(getPosition(0), getPosition(0)) + .add(recipe.ingredient) + .setSlotBackground(HTBackgroundType.INPUT) + // output + val itemOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(3), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + val fluidOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(5), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) + } + + override fun setupRecipeExtras( + builder: IRecipeExtrasBuilder, + recipe: HTFluidToRecipe.BasicItemAndFluid, + focuses: IFocusGroup + ) { + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) + builder.addRecipePlus(getPosition(4)) + } +} diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt index 4f0280f4d..9b413678e 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt @@ -3,25 +3,26 @@ 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.HTItemToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup class HTItemToItemAndFluidRecipeCategory( guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType -) : HTHolderRecipeCategory( + recipeType: HTHolderJeiRecipeType +) : HTHolderRecipeCategory( guiHelper, recipeType, 18 * 6, 18 * 1, - HTItemToItemAndFluidRecipe.Basic.SIMPLE_CODEC + HTItemToRecipe.BasicItemAndFluid.SIMPLE_CODEC ) { override fun setupRecipe( builder: IRecipeLayoutBuilder, - recipe: HTItemToItemAndFluidRecipe.Basic, + recipe: HTItemToRecipe.BasicItemAndFluid, focuses: IFocusGroup ) { // input @@ -30,19 +31,18 @@ class HTItemToItemAndFluidRecipeCategory( .add(recipe.ingredient) .setSlotBackground(HTBackgroundType.INPUT) // output - builder + val itemOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(3), getPosition(0)) - .add(recipe.itemResult) .setSlotBackground(HTBackgroundType.OUTPUT) - builder + val fluidOutput: IRecipeSlotBuilder = builder .addOutputSlot(getPosition(5), getPosition(0)) - .add(recipe.fluidResult) .setSlotBackground(HTBackgroundType.OUTPUT) + recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) } override fun setupRecipeExtras( builder: IRecipeExtrasBuilder, - recipe: HTItemToItemAndFluidRecipe.Basic, + recipe: HTItemToRecipe.BasicItemAndFluid, focuses: IFocusGroup ) { builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 0410d3db0..18286f8d2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -127,6 +127,7 @@ internal data object RagiumCommon { RagiumRecipeLookups.FREEZING.fromRecipeType(RagiumRecipeTypes.FREEZING, identity()) RagiumRecipeLookups.MELTING.fromRecipeType(RagiumRecipeTypes.MELTING, identity()) RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) + RagiumRecipeLookups.REFINING.fromRecipeType(RagiumRecipeTypes.REFINING, identity()) RagiumRecipeLookups.BATHING.fromRecipeType(RagiumRecipeTypes.BATHING, identity()) RagiumRecipeLookups.CENTRIFUGING.fromRecipeType(RagiumRecipeTypes.CENTRIFUGING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt index 193a3c42f..19a2b104d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/recipe/RTPotionBottleDrainingRecipe.kt @@ -6,7 +6,7 @@ import hiiragi283.lib.recipe.base.HTItemToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe import hiiragi283.lib.recipe.ingredient.HTIngredientHelper -import hiiragi283.lib.recipe.result.HTItemAndFluidResult +import hiiragi283.lib.recipe.result.HTItemAndFluidStack import net.minecraft.world.item.ItemInstance import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.SingleRecipeInput @@ -26,7 +26,7 @@ data class RTPotionBottleDrainingRecipe(val bottleType: HTBottleType, override v override fun test(input: ItemInstance): Boolean = bottleType.filledItem.isOf(input) && HTPotionHelper.hasAnyEffect(input) - override fun apply(input: ItemInstance): HTItemAndFluidResult = HTItemAndFluidResult( + override fun apply(input: ItemInstance): HTItemAndFluidStack = HTItemAndFluidStack( bottleType.emptyItem.toStack(), HTPotionHelper.createFluid(input, HTPotionHelper.BOTTLE_AMOUNT) ?: FluidStack.EMPTY ) From 5b633c3bc21a77e6aa568112a849c94ba6b41656 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 20:55:45 +0900 Subject: [PATCH 30/38] =?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=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=20-=20Quartz=20Glass=20/=20=E3=82=AF=E3=82=A9=E3=83=BC?= =?UTF-8?q?=E3=83=84=E3=82=AC=E3=83=A9=E3=82=B9=20-=20Quartz=20Glass=20Pan?= =?UTF-8?q?e=20/=20=E3=82=AF=E3=82=A9=E3=83=BC=E3=83=84=E3=82=AC=E3=83=A9?= =?UTF-8?q?=E3=82=B9=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 2 +- .../data/lang/RagiumEnglishLangProvider.kt | 3 + .../data/lang/RagiumJapaneseLangProvider.kt | 3 + .../ragium/data/model/RagiumModelProvider.kt | 5 ++ .../data/recipe/RagiumCommonRecipeProvider.kt | 71 +++++++++++++++- .../data/recipe/RagiumHeatRecipeProvider.kt | 44 ---------- .../recipe/RagiumMechanicalRecipeProvider.kt | 2 +- .../recipe/RagiumVanillaRecipeProvider.kt | 18 ++++ .../data/tag/RagiumBlockItemTagsProvider.kt | 19 ++++- .../data/tag/RagiumBlockTagsProvider.kt | 4 +- .../ragium/data/tag/RagiumItemTagsProvider.kt | 2 - .../ragium/blockstates/quartz_glass.json | 7 ++ .../ragium/blockstates/quartz_glass_pane.json | 77 ++++++++++++++++++ .../assets/ragium/items/quartz_glass.json | 6 ++ .../ragium/items/quartz_glass_pane.json | 6 ++ .../resources/assets/ragium/lang/en_us.json | 2 + .../resources/assets/ragium/lang/ja_jp.json | 2 + .../ragium/models/block/quartz_glass.json | 9 ++ .../block/quartz_glass_pane_noside.json | 9 ++ .../block/quartz_glass_pane_noside_alt.json | 9 ++ .../models/block/quartz_glass_pane_post.json | 13 +++ .../models/block/quartz_glass_pane_side.json | 13 +++ .../block/quartz_glass_pane_side_alt.json | 13 +++ .../ragium/models/item/quartz_glass_pane.json | 6 ++ .../data/c/tags/block/glass_blocks.json | 5 ++ .../c/tags/block/glass_blocks/quartz.json | 5 ++ .../data/c/tags/block/glass_panes.json | 5 ++ .../data/c/tags/block/glass_panes/quartz.json | 5 ++ .../data/c/tags/item/glass_blocks.json | 5 ++ .../data/c/tags/item/glass_blocks/quartz.json | 5 ++ .../data/c/tags/item/glass_panes.json | 5 ++ .../data/c/tags/item/glass_panes/quartz.json | 5 ++ .../tags/block/mineable/pickaxe.json | 2 + .../loot_table/blocks/quartz_glass.json | 21 +++++ .../loot_table/blocks/quartz_glass_pane.json | 21 +++++ .../alloying/quartz_glass_from_amethyst.json | 22 +++++ .../quartz_glass_from_amethyst_block.json | 16 ++++ .../alloying/quartz_glass_from_quartz.json | 22 +++++ .../sulfur_dioxide.json | 10 +-- .../sulfur_trioxide.json | 10 +-- .../recipe/shaped/quartz_glass_pane.json | 15 ++++ .../recipe/smelting/glass_from_dust.json | 11 +++ .../resources/reports/ragium/registries.json | 4 + .../lib/data/tag/HTBlockItemTagsProvider.kt | 7 ++ .../lib/registry/HTDecorationContent.kt | 16 ++-- .../kotlin/hiiragi283/lib/tag/HTCommonTags.kt | 15 ++++ .../hiiragi283/ragium/api/tag/RagiumTags.kt | 2 +- .../ragium/common/block/RagiumBlocks.kt | 11 +++ .../ragium/textures/block/quartz_glass.png | Bin 0 -> 212 bytes 49 files changed, 513 insertions(+), 77 deletions(-) create mode 100644 src/generated/resources/assets/ragium/blockstates/quartz_glass.json create mode 100644 src/generated/resources/assets/ragium/blockstates/quartz_glass_pane.json create mode 100644 src/generated/resources/assets/ragium/items/quartz_glass.json create mode 100644 src/generated/resources/assets/ragium/items/quartz_glass_pane.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside_alt.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass_pane_post.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side.json create mode 100644 src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side_alt.json create mode 100644 src/generated/resources/assets/ragium/models/item/quartz_glass_pane.json create mode 100644 src/generated/resources/data/c/tags/block/glass_blocks.json create mode 100644 src/generated/resources/data/c/tags/block/glass_blocks/quartz.json create mode 100644 src/generated/resources/data/c/tags/block/glass_panes.json create mode 100644 src/generated/resources/data/c/tags/block/glass_panes/quartz.json create mode 100644 src/generated/resources/data/c/tags/item/glass_blocks.json create mode 100644 src/generated/resources/data/c/tags/item/glass_blocks/quartz.json create mode 100644 src/generated/resources/data/c/tags/item/glass_panes.json create mode 100644 src/generated/resources/data/c/tags/item/glass_panes/quartz.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/quartz_glass.json create mode 100644 src/generated/resources/data/ragium/loot_table/blocks/quartz_glass_pane.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst_block.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_quartz.json rename src/generated/resources/data/ragium/recipe/{melting => pyrolyzing}/sulfur_dioxide.json (74%) rename src/generated/resources/data/ragium/recipe/{melting => pyrolyzing}/sulfur_trioxide.json (75%) create mode 100644 src/generated/resources/data/ragium/recipe/shaped/quartz_glass_pane.json create mode 100644 src/generated/resources/data/ragium/recipe/smelting/glass_from_dust.json create mode 100644 src/main/resources/assets/ragium/textures/block/quartz_glass.png diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index d0286548b..6ee35912b 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -242,7 +242,7 @@ data object RagiumClient : HTClientMod() { ) { stack: ItemStack, _, _, _, _, builder: Consumer -> if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender - val isCreative: Boolean = stack.`is`(RagiumTags.BlockItem.STORAGES_CREATIVE.item) + val isCreative: Boolean = stack.`is`(RagiumTags.BlockItems.STORAGES_CREATIVE.item) // Fluid Name val resource: FluidResource = view.resource when { diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 0d2175d71..e8e58a159 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -39,6 +39,9 @@ class RagiumEnglishLangProvider(output: PackOutput) : addAdvancement(RagiumAdvancementKeys.FREEZER, "My power is 530,000.", "Acquire Freezer") addAdvancement(RagiumAdvancementKeys.MELTER, "(S)melter(y)", "Acquire Melter") // Block + add(RagiumBlocks.QUARTZ_GLASS, "Quartz Glass") + add(RagiumBlocks.QUARTZ_GLASS_PANE, "Quartz Glass Pane") + add(RagiumBlocks.ASSEMBLER, "Assembler") add(RagiumBlocks.CRUSHER, "Crusher") add(RagiumBlocks.COMPRESSOR, "Compressor") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 24d83913c..9f8d7579f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -35,6 +35,9 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addAdvancement(RagiumAdvancementKeys.FREEZER, "私の消費電力は53万です", "冷凍機を手に入れる") addAdvancement(RagiumAdvancementKeys.MELTER, "融けてしまいそう", "溶融炉を手に入れる") // Block + add(RagiumBlocks.QUARTZ_GLASS, "クォーツガラス") + add(RagiumBlocks.QUARTZ_GLASS_PANE, "クォーツガラス板") + add(RagiumBlocks.ASSEMBLER, "組立機") add(RagiumBlocks.CRUSHER, "破砕機") add(RagiumBlocks.COMPRESSOR, "圧縮機") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 96e1df05e..35e66cfee 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -109,6 +109,11 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP } } // Decoration + generators.createGlassBlocks( + RagiumBlocks.QUARTZ_GLASS.getOrThrow(), + RagiumBlocks.QUARTZ_GLASS_PANE.getOrThrow() + ) + for ((machineType: HTMachineType, block: HTSimpleDeferredBlockAndItem) in RagiumBlocks.MACHINE_CASINGS) { generators.createSimple(block, ModelTemplates.CUBE_TOP, textureMapping(machineType)) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index bb1c5f404..b30fa7323 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -248,6 +248,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu sodium() aluminum() + silica() sulfur() chlorine() @@ -478,7 +479,70 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } + private fun silica() { + // Glass -> Molten Glass + RagiumRecipeBuilders.melting { + ingredient { + +holderSet(Tags.Items.GLASS_BLOCKS_CHEAP, CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Other.GLASS)) + } + result { +RagiumFluids.MOLTEN_GLASS } + recipeId suffix "_from_block" + }.save(exporter) + RagiumRecipeBuilders.melting { + ingredient { +holderSet(Tags.Items.GLASS_PANES) } + result { + +RagiumFluids.MOLTEN_GLASS + amount = 375 + } + recipeId suffix "_from_pane" + }.save(exporter) + RagiumRecipeBuilders.melting { + ingredient { + +holderSet(Tags.Items.GLASS_PANES) + count = 8 + } + result { + +RagiumFluids.MOLTEN_GLASS + amount *= 3 + } + time *= 8 + recipeId suffix "_from_panes" + }.save(exporter) + // Molten Glass -> Glass + RagiumRecipeBuilders.freezing { + ingredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } + result { +Items.GLASS } + }.save(exporter) + // SiO2 + Sand -> Quartz Glass + RagiumRecipeBuilders.alloying { + ingredient { +dustOrGem(RagiumMaterial.Gem.QUARTZ) } + extra { +holderSet(Tags.Items.SANDS) } + result { +RagiumBlocks.QUARTZ_GLASS } + recipeId suffix "_from_quartz" + }.save(exporter) + RagiumRecipeBuilders.alloying { + ingredient { + +dustOrGem(RagiumMaterial.Gem.AMETHYST) + count = 4 + } + extra { +holderSet(Tags.Items.SANDS) } + result { +RagiumBlocks.QUARTZ_GLASS } + recipeId suffix "_from_amethyst" + }.save(exporter) + RagiumRecipeBuilders.alloying { + ingredient { items { +Items.AMETHYST_BLOCK } } + extra { +holderSet(Tags.Items.SANDS) } + result { +RagiumBlocks.QUARTZ_GLASS } + recipeId suffix "_from_amethyst_block" + }.save(exporter) + } + private fun sulfur() { + // S -> SO2 + RagiumRecipeBuilders.pyrolyzing { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SULFUR) } + fluidResult { +RagiumFluids.SULFUR_DIOXIDE } + }.save(exporter) // SO2 + 1/2 O2 -> SO3 RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.SULFUR_DIOXIDE) } @@ -488,6 +552,11 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } }.save(exporter) + // Blaze Powder -> SO3 + RagiumRecipeBuilders.pyrolyzing { + ingredient { items { +Items.BLAZE_POWDER } } + fluidResult { +RagiumFluids.SULFUR_TRIOXIDE } + }.save(exporter) // SO3 + H2O -> H2SO4 RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.SULFUR_TRIOXIDE) } @@ -631,7 +700,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu recipeId suffix "_from_quartz" }.save(exporter) RagiumRecipeBuilders.alloying { - ingredient { +holderSet(RagiumTags.BlockItem.QUARTZ_BLOCKS.item) } + ingredient { +holderSet(RagiumTags.BlockItems.QUARTZ_BLOCKS.item) } extra { +dustOrCoke count = 4 diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 2253a155d..4fc9b8d55 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -127,11 +127,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture ingredient { +holderSet(RagiumFluids.HONEY) } result { +Items.HONEY_BLOCK } }.save(exporter) - // Glass - RagiumRecipeBuilders.freezing { - ingredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } - result { +Items.GLASS } - }.save(exporter) // Sticky Ball RagiumRecipeBuilders.freezing { @@ -243,34 +238,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture recipeId prefix "${amplifier}x_" }.save(exporter) } - // Molten Glass - RagiumRecipeBuilders.melting { - ingredient { - +holderSet(Tags.Items.GLASS_BLOCKS_CHEAP, CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Other.GLASS)) - } - result { +RagiumFluids.MOLTEN_GLASS } - recipeId suffix "_from_block" - }.save(exporter) - RagiumRecipeBuilders.melting { - ingredient { +holderSet(Tags.Items.GLASS_PANES) } - result { - +RagiumFluids.MOLTEN_GLASS - amount = 375 - } - recipeId suffix "_from_pane" - }.save(exporter) - RagiumRecipeBuilders.melting { - ingredient { - +holderSet(Tags.Items.GLASS_PANES) - count = 8 - } - result { - +RagiumFluids.MOLTEN_GLASS - amount *= 3 - } - time *= 8 - recipeId suffix "_from_panes" - }.save(exporter) // Molten Redstone RagiumRecipeBuilders.melting { ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } @@ -295,17 +262,6 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture amount = 90 } }.save(exporter) - - // S -> SO2 - RagiumRecipeBuilders.melting { - ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.SULFUR) } - result { +RagiumFluids.SULFUR_DIOXIDE } - }.save(exporter) - // Blaze Powder -> SO3 - RagiumRecipeBuilders.melting { - ingredient { items { +Items.BLAZE_POWDER } } - result { +RagiumFluids.SULFUR_TRIOXIDE } - }.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 444d783c3..24b92b035 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -451,7 +451,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable setOf( Tags.Items.SANDSTONE_UNCOLORED_BLOCKS to Items.SAND, Tags.Items.SANDSTONE_RED_BLOCKS to Items.RED_SAND, - RagiumTags.BlockItem.QUARTZ_BLOCKS.item to Items.QUARTZ + RagiumTags.BlockItems.QUARTZ_BLOCKS.item to Items.QUARTZ ).forEach { (block: TagKey, base: Item) -> RagiumRecipeBuilders.crushing { ingredient { +holderSet(block) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 285539e97..502fe6df3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -303,6 +303,16 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut count = 4 } }.save(exporter) + // Quartz Glass Pane + VanillaRecipeBuilders.shaped { + +"AAA" + +"AAA" + define('A') { items { +RagiumBlocks.QUARTZ_GLASS } } + result { + +RagiumBlocks.QUARTZ_GLASS_PANE + count = 8 + } + }.save(exporter) } private fun registerDecoration(content: HTDecorationContent) { @@ -604,6 +614,14 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut recipeId suffix "_from_dust" } } + // Dust -> Base + VanillaRecipeBuilders.smelting { + ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Other.GLASS) } + result { +Items.GLASS } + group = "glass" + recipeId suffix "_from_dust" + }.save(exporter) + // Fuel for (fuel: RagiumMaterial.Fuel in RagiumMaterial.Fuel.entries) { val base: HTSimpleDeferredItem = RagiumMaterialHelper.getBase(fuel) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockItemTagsProvider.kt index 07703b607..e65b93a8e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockItemTagsProvider.kt @@ -7,11 +7,13 @@ import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.resource.BlockItemKey import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.BlockItemTag +import hiiragi283.lib.tag.HTCommonTags import hiiragi283.ragium.api.material.HTBlockPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.block.RagiumBlocks +import net.neoforged.neoforge.common.Tags class RagiumBlockItemTagsProvider(factory: (BlockItemTag) -> HTBlockItemTagBuilder) : HTBlockItemTagsProvider(factory) { override fun run() { @@ -21,20 +23,29 @@ class RagiumBlockItemTagsProvider(factory: (BlockItemTag) -> HTBlockItemTagBuild builder(part.tagPrefix, material).add(block) } - builder(RagiumTags.BlockItem.QUARTZ_BLOCKS) + builder(RagiumTags.BlockItems.QUARTZ_BLOCKS) .add(BlockItemKey(vanillaId("chiseled_quartz_block"))) .add(BlockItemKey(vanillaId("quartz_block"))) .add(BlockItemKey(vanillaId("quartz_bricks"))) .add(BlockItemKey(vanillaId("quartz_pillar"))) - builder(RagiumTags.BlockItem.STORAGES_CREATIVE) - .add(RagiumBlocks.CREATIVE_BATTERY) - .add(RagiumBlocks.CREATIVE_TANK) + // Decoration + builder(Tags.Blocks.GLASS_BLOCKS, Tags.Items.GLASS_BLOCKS).addTag(HTCommonTags.BlockItems.GLASS_BLOCKS_QUARTZ) + builder(HTCommonTags.BlockItems.GLASS_BLOCKS_QUARTZ).add(RagiumBlocks.QUARTZ_GLASS) + + builder(Tags.Blocks.GLASS_PANES, Tags.Items.GLASS_PANES).addTag(HTCommonTags.BlockItems.GLASS_PANES_QUARTZ) + builder(HTCommonTags.BlockItems.GLASS_PANES_QUARTZ).add(RagiumBlocks.QUARTZ_GLASS_PANE) + + RagiumBlocks.ALL_DECORATIONS.forEach { it.appendTags(::builder) } // Machine for (machineType: HTMachineType in HTMachineType.entries) { for (block: HTSimpleDeferredBlockAndItem in RagiumBlocks.MACHINES[machineType] ?: listOf()) { builder(HTMachineType.PREFIX, machineType).add(block) } } + // Storage + builder(RagiumTags.BlockItems.STORAGES_CREATIVE) + .add(RagiumBlocks.CREATIVE_BATTERY) + .add(RagiumBlocks.CREATIVE_TANK) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt index afba9cf4f..c5ab7a049 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumBlockTagsProvider.kt @@ -26,6 +26,8 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yieldAll(RagiumBlocks.MATERIAL_ORES.values) yieldAll(RagiumBlocks.STORAGE_BLOCKS.values) yield(RagiumBlocks.ECHO_BLOCK) + yield(RagiumBlocks.QUARTZ_GLASS) + yield(RagiumBlocks.QUARTZ_GLASS_PANE) yieldAll(RagiumBlocks.ALL_DECORATIONS.flatMap { it.all }) yieldAll(RagiumBlocks.MACHINES.values.flatten()) @@ -37,7 +39,5 @@ class RagiumBlockTagsProvider(output: PackOutput, lookupProvider: CompletableFut yieldAll(RagiumBlocks.TANKS) yield(RagiumBlocks.CREATIVE_BATTERY) }.forEach(pickaxe::add) - // Other - RagiumBlocks.ALL_DECORATIONS.forEach { it.appendBlockTags(::builder) } } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 3646c524a..51dadcaaa 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -55,8 +55,6 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(RagiumTags.Items.SOOTY_IRON_TOOL_MATERIALS) .addTag(CommonTagPrefixes.INGOT.itemTagKey(RagiumMaterial.Alloy.SOOTY_IRON)) // Other - RagiumBlocks.ALL_DECORATIONS.forEach { it.appendItemTags(::builder) } - builder(ItemTags.PLANKS).add(RagiumItems.PARTICLE_BOARD) builder(Tags.Items.FEATHERS).add(RagiumItems.SYNTHETIC_FEATHER) diff --git a/src/generated/resources/assets/ragium/blockstates/quartz_glass.json b/src/generated/resources/assets/ragium/blockstates/quartz_glass.json new file mode 100644 index 000000000..cbb912bf0 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/quartz_glass.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/quartz_glass_pane.json b/src/generated/resources/assets/ragium/blockstates/quartz_glass_pane.json new file mode 100644 index 000000000..832ad7c70 --- /dev/null +++ b/src/generated/resources/assets/ragium/blockstates/quartz_glass_pane.json @@ -0,0 +1,77 @@ +{ + "multipart": [ + { + "apply": { + "model": "ragium:block/quartz_glass_pane_post" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_side" + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_side", + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_side_alt" + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_side_alt", + "y": 90 + }, + "when": { + "west": "true" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_noside" + }, + "when": { + "north": "false" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_noside_alt" + }, + "when": { + "east": "false" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_noside_alt", + "y": 90 + }, + "when": { + "south": "false" + } + }, + { + "apply": { + "model": "ragium:block/quartz_glass_pane_noside", + "y": 270 + }, + "when": { + "west": "false" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/quartz_glass.json b/src/generated/resources/assets/ragium/items/quartz_glass.json new file mode 100644 index 000000000..5697662cb --- /dev/null +++ b/src/generated/resources/assets/ragium/items/quartz_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:block/quartz_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/quartz_glass_pane.json b/src/generated/resources/assets/ragium/items/quartz_glass_pane.json new file mode 100644 index 000000000..462c60eeb --- /dev/null +++ b/src/generated/resources/assets/ragium/items/quartz_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/quartz_glass_pane" + } +} \ 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 893b31d91..165fa0956 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -104,6 +104,8 @@ "block.ragium.precision_assembler": "Precision Assembler", "block.ragium.purple_dye": "Purple Dye", "block.ragium.pyrolyzer": "Pyrolyzer", + "block.ragium.quartz_glass": "Quartz Glass", + "block.ragium.quartz_glass_pane": "Quartz Glass Pane", "block.ragium.red_dye": "Red Dye", "block.ragium.refinery": "Refinery", "block.ragium.resin": "Resin", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index d419cdaa0..34f78e2e2 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -104,6 +104,8 @@ "block.ragium.precision_assembler": "精密組立機", "block.ragium.purple_dye": "紫色の染料", "block.ragium.pyrolyzer": "熱分解炉", + "block.ragium.quartz_glass": "クォーツガラス", + "block.ragium.quartz_glass_pane": "クォーツガラス板", "block.ragium.red_dye": "赤色の染料", "block.ragium.refinery": "精製機", "block.ragium.resin": "樹脂", diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass.json b/src/generated/resources/assets/ragium/models/block/quartz_glass.json new file mode 100644 index 000000000..c5594e968 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside.json b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside.json new file mode 100644 index 000000000..3ad9d6a86 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/template_glass_pane_noside", + "textures": { + "pane": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside_alt.json b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside_alt.json new file mode 100644 index 000000000..488254284 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_noside_alt.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/template_glass_pane_noside_alt", + "textures": { + "pane": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_post.json b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_post.json new file mode 100644 index 000000000..c9197a7f9 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_post.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/template_glass_pane_post", + "textures": { + "edge": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass_pane_top" + }, + "pane": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side.json b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side.json new file mode 100644 index 000000000..fc0844c83 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/template_glass_pane_side", + "textures": { + "edge": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass_pane_top" + }, + "pane": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side_alt.json b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side_alt.json new file mode 100644 index 000000000..abfdd8b8a --- /dev/null +++ b/src/generated/resources/assets/ragium/models/block/quartz_glass_pane_side_alt.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/template_glass_pane_side_alt", + "textures": { + "edge": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass_pane_top" + }, + "pane": { + "force_translucent": true, + "sprite": "ragium:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/quartz_glass_pane.json b/src/generated/resources/assets/ragium/models/item/quartz_glass_pane.json new file mode 100644 index 000000000..5c9935e77 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/quartz_glass_pane.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:block/quartz_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/glass_blocks.json b/src/generated/resources/data/c/tags/block/glass_blocks.json new file mode 100644 index 000000000..0c30de2d3 --- /dev/null +++ b/src/generated/resources/data/c/tags/block/glass_blocks.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#c:glass_blocks/quartz" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/glass_blocks/quartz.json b/src/generated/resources/data/c/tags/block/glass_blocks/quartz.json new file mode 100644 index 000000000..195fe5361 --- /dev/null +++ b/src/generated/resources/data/c/tags/block/glass_blocks/quartz.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:quartz_glass" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/glass_panes.json b/src/generated/resources/data/c/tags/block/glass_panes.json new file mode 100644 index 000000000..c5411323a --- /dev/null +++ b/src/generated/resources/data/c/tags/block/glass_panes.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#c:glass_panes/quartz" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/glass_panes/quartz.json b/src/generated/resources/data/c/tags/block/glass_panes/quartz.json new file mode 100644 index 000000000..3f5a7df9b --- /dev/null +++ b/src/generated/resources/data/c/tags/block/glass_panes/quartz.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:quartz_glass_pane" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/glass_blocks.json b/src/generated/resources/data/c/tags/item/glass_blocks.json new file mode 100644 index 000000000..0c30de2d3 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/glass_blocks.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#c:glass_blocks/quartz" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/glass_blocks/quartz.json b/src/generated/resources/data/c/tags/item/glass_blocks/quartz.json new file mode 100644 index 000000000..195fe5361 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/glass_blocks/quartz.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:quartz_glass" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/glass_panes.json b/src/generated/resources/data/c/tags/item/glass_panes.json new file mode 100644 index 000000000..c5411323a --- /dev/null +++ b/src/generated/resources/data/c/tags/item/glass_panes.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#c:glass_panes/quartz" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/glass_panes/quartz.json b/src/generated/resources/data/c/tags/item/glass_panes/quartz.json new file mode 100644 index 000000000..3f5a7df9b --- /dev/null +++ b/src/generated/resources/data/c/tags/item/glass_panes/quartz.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:quartz_glass_pane" + ] +} \ 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 3731efd4b..aad41554e 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -50,6 +50,8 @@ "ragium:potion_tank", "ragium:precision_assembler", "ragium:pyrolyzer", + "ragium:quartz_glass", + "ragium:quartz_glass_pane", "ragium:refinery", "ragium:scanner", "ragium:smelter", diff --git a/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass.json b/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass.json new file mode 100644 index 000000000..b7326614b --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:quartz_glass" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/quartz_glass" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass_pane.json b/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass_pane.json new file mode 100644 index 000000000..5885964be --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/blocks/quartz_glass_pane.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ragium:quartz_glass_pane" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:blocks/quartz_glass_pane" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst.json b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst.json new file mode 100644 index 000000000..488490d12 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#c:sands" + }, + "ingredient": { + "count": 4, + "items": { + "neoforge:ingredient_type": "ragium:material_tags", + "tags": [ + "c:dusts/amethyst", + "c:gems/amethyst" + ] + } + }, + "result": { + "count": 1, + "id": "ragium:quartz_glass" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst_block.json b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst_block.json new file mode 100644 index 000000000..768738ae1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_amethyst_block.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#c:sands" + }, + "ingredient": { + "count": 1, + "items": "minecraft:amethyst_block" + }, + "result": { + "count": 1, + "id": "ragium:quartz_glass" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_quartz.json b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_quartz.json new file mode 100644 index 000000000..bbff0f154 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/quartz_glass_from_quartz.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#c:sands" + }, + "ingredient": { + "count": 1, + "items": { + "neoforge:ingredient_type": "ragium:material_tags", + "tags": [ + "c:dusts/quartz", + "c:gems/quartz" + ] + } + }, + "result": { + "count": 1, + "id": "ragium:quartz_glass" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_dioxide.json similarity index 74% rename from src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json rename to src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_dioxide.json index e6822813e..eda6ca4ef 100644 --- a/src/generated/resources/data/ragium/recipe/melting/sulfur_dioxide.json +++ b/src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_dioxide.json @@ -1,12 +1,12 @@ { - "type": "ragium:melting", + "type": "ragium:pyrolyzing", + "fluid_result": { + "amount": 1000, + "id": "ragium:sulfur_dioxide" + }, "ingredient": { "count": 1, "items": "#c:dusts/sulfur" }, - "result": { - "amount": 1000, - "id": "ragium:sulfur_dioxide" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json b/src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_trioxide.json similarity index 75% rename from src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json rename to src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_trioxide.json index bc05da52f..7a8efd59a 100644 --- a/src/generated/resources/data/ragium/recipe/melting/sulfur_trioxide.json +++ b/src/generated/resources/data/ragium/recipe/pyrolyzing/sulfur_trioxide.json @@ -1,12 +1,12 @@ { - "type": "ragium:melting", + "type": "ragium:pyrolyzing", + "fluid_result": { + "amount": 1000, + "id": "ragium:sulfur_trioxide" + }, "ingredient": { "count": 1, "items": "minecraft:blaze_powder" }, - "result": { - "amount": 1000, - "id": "ragium:sulfur_trioxide" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/quartz_glass_pane.json b/src/generated/resources/data/ragium/recipe/shaped/quartz_glass_pane.json new file mode 100644 index 000000000..5d4c1bf45 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/quartz_glass_pane.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "ragium:quartz_glass" + }, + "pattern": [ + "AAA", + "AAA" + ], + "result": { + "count": 8, + "id": "ragium:quartz_glass_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/smelting/glass_from_dust.json b/src/generated/resources/data/ragium/recipe/smelting/glass_from_dust.json new file mode 100644 index 000000000..766302862 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/smelting/glass_from_dust.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.0, + "group": "glass", + "ingredient": "#c:dusts/glass", + "result": { + "id": "minecraft:glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 3bf3118c7..43a2d7bd7 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -72,6 +72,8 @@ "precision_assembler", "purple_dye", "pyrolyzer", + "quartz_glass", + "quartz_glass_pane", "red_dye", "refinery", "resin", @@ -357,6 +359,8 @@ "purple_dye_bucket", "pyrolyzer", "quartz_dust", + "quartz_glass", + "quartz_glass_pane", "quick_lime_dust", "raginite_dust", "red_dye_bucket", diff --git a/src/lib/kotlin/hiiragi283/lib/data/tag/HTBlockItemTagsProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/tag/HTBlockItemTagsProvider.kt index 4220901a8..461549ef8 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/tag/HTBlockItemTagsProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/tag/HTBlockItemTagsProvider.kt @@ -4,6 +4,7 @@ import hiiragi283.lib.resource.BlockItemKey import hiiragi283.lib.tag.BlockItemTag import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.lib.tag.HTTagPrefix +import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block @@ -47,6 +48,12 @@ abstract class HTBlockItemTagsProvider(private val factory: (BlockItemTag) -> HT protected fun builder(tagKey: BlockItemTag): HTBlockItemTagBuilder = factory(tagKey) + /** + * @since 26.1.8 + */ + protected fun builder(block: TagKey, item: TagKey): HTBlockItemTagBuilder = + builder(BlockItemTag(block, item)) + protected fun builders(tagKey: BlockItemTag, vararg children: BlockItemTag): HTBlockItemTagBuilder = children.fold(builder(tagKey)) { builder: HTBlockItemTagBuilder, tagKeyIn: BlockItemTag -> builder.addTag(tagKeyIn) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt index 789a0c022..69de08cfc 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDecorationContent.kt @@ -1,6 +1,6 @@ package hiiragi283.lib.registry -import hiiragi283.lib.data.tag.HTTagBuilder +import hiiragi283.lib.data.tag.HTBlockItemTagBuilder import net.minecraft.resources.ResourceKey import net.minecraft.tags.BlockTags import net.minecraft.tags.ItemTags @@ -66,15 +66,9 @@ data class HTDecorationContent( val all: List get() = listOfNotNull(base, slab, stairs, wall) - fun appendBlockTags(builder: (TagKey) -> HTTagBuilder) { - builder(BlockTags.SLABS).add(slab) - stairs?.let(builder(BlockTags.STAIRS)::add) - wall?.let(builder(BlockTags.WALLS)::add) - } - - fun appendItemTags(builder: (TagKey) -> HTTagBuilder) { - builder(ItemTags.SLABS).add(slab.item) - stairs?.item?.let(builder(ItemTags.STAIRS)::add) - wall?.item?.let(builder(ItemTags.WALLS)::add) + fun appendTags(builder: (TagKey, TagKey) -> HTBlockItemTagBuilder) { + builder(BlockTags.SLABS, ItemTags.SLABS).add(slab) + stairs?.let(builder(BlockTags.STAIRS, ItemTags.STAIRS)::add) + wall?.let(builder(BlockTags.WALLS, ItemTags.WALLS)::add) } } diff --git a/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt b/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt index 56319382d..00b7526a6 100644 --- a/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt +++ b/src/lib/kotlin/hiiragi283/lib/tag/HTCommonTags.kt @@ -16,6 +16,21 @@ import net.minecraft.world.level.material.Fluid * @since 26.1.0 */ data object HTCommonTags { + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + data object BlockItems { + @JvmField + val GLASS_BLOCKS_QUARTZ: BlockItemTag = create("glass_blocks", "quartz") + + @JvmField + val GLASS_PANES_QUARTZ: BlockItemTag = create("glass_panes", "quartz") + + @JvmStatic + private fun create(vararg path: String): BlockItemTag = BlockItemTag(HTConstants.COMMON.toId(*path)) + } + data object Blocks { @JvmStatic private fun create(vararg path: String): TagKey = BlockTags.create(HTConstants.COMMON.toId(*path)) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt index dce7951a7..d4eddbe14 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt @@ -18,7 +18,7 @@ data object RagiumTags { * @author Hiiragi Tsubasa * @since 26.1.5 */ - data object BlockItem { + data object BlockItems { @JvmField val QUARTZ_BLOCKS: BlockItemTag = create("quartz_blocks") diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 15b90838e..eb597c082 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -46,7 +46,9 @@ import net.minecraft.world.level.ItemLike import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Blocks import net.minecraft.world.level.block.DropExperienceBlock +import net.minecraft.world.level.block.IronBarsBlock import net.minecraft.world.level.block.SoundType +import net.minecraft.world.level.block.TransparentBlock import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraft.world.level.material.MapColor import net.neoforged.bus.api.IEventBus @@ -250,6 +252,15 @@ data object RagiumBlocks { parent = { GYPSUM_DECORATION } ) + // Glass + @JvmField + val QUARTZ_GLASS: HTBasicDeferredBlockAndItem = + REGISTER.registerSimple("quartz_glass", copyOf(Blocks.GLASS), ::TransparentBlock) + + @JvmField + val QUARTZ_GLASS_PANE: HTBasicDeferredBlockAndItem = + REGISTER.registerSimple("quartz_glass_pane", copyOf(Blocks.GLASS_PANE), ::IronBarsBlock) + // Helper @JvmField val ALL_DECORATIONS: List = listOf( diff --git a/src/main/resources/assets/ragium/textures/block/quartz_glass.png b/src/main/resources/assets/ragium/textures/block/quartz_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..8616d26d672a859e20fd006a665c698c7c7a8618 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|`aE46Lo9l) zPTI)XU?AXHA9JW-r{o%)5_fC!4VyQWF-U8t@8Brxy3yfsxq_=HTyD?t=bx`$D3{~U z-^#N`aEtHT$*(W#)~!YhZOK=%3S4mS?= zv#w4x6j^8L$=mth^@AgvhYl`nTX1XHw;S#YPafE~S6$1S;Q$-YG?SAn+Eq+|E@SX? L^>bP0l+XkKj7C!t literal 0 HcmV?d00001 From 2f942bec16b3b05617e8be0edd0898271ed23a63 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 21:09:31 +0900 Subject: [PATCH 31/38] =?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=8CMolten=20Plastic=20/=20=E6=BA=B6?= =?UTF-8?q?=E8=9E=8D=E3=83=97=E3=83=A9=E3=82=B9=E3=83=81=E3=83=83=E3=82=AF?= =?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 --- .../hiiragi283/ragium/client/RagiumClient.kt | 4 + .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../ragium/data/model/RagiumModelProvider.kt | 1 + .../data/recipe/RagiumCommonRecipeProvider.kt | 91 +++++++++++-------- .../recipe/RagiumVanillaRecipeProvider.kt | 11 --- .../ragium/items/molten_plastic_bucket.json | 12 +++ .../resources/assets/ragium/lang/en_us.json | 4 + .../resources/assets/ragium/lang/ja_jp.json | 4 + .../data/c/tags/fluid/molten_plastic.json | 5 + .../resources/data/c/tags/item/buckets.json | 1 + .../c/tags/item/buckets/molten_plastic.json | 5 + .../ragium/recipe/freezing/plastic_plate.json | 4 +- ...plastic_plate.json => molten_plastic.json} | 6 +- .../resources/reports/ragium/registries.json | 3 + .../ragium/common/fluid/RagiumFluids.kt | 3 + 16 files changed, 100 insertions(+), 56 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/molten_plastic_bucket.json create mode 100644 src/generated/resources/data/c/tags/fluid/molten_plastic.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/molten_plastic.json rename src/generated/resources/data/ragium/recipe/reacting/{plastic_plate.json => molten_plastic.json} (73%) diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 6ee35912b..eaff7f62f 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -166,6 +166,10 @@ data object RagiumClient : HTClientMod() { dull() colorTint(Color(0xff9933)) } + register.register(RagiumFluids.MOLTEN_PLASTIC) { + molten() + colorTint(Color(0xccccdd)) + } register.register(RagiumFluids.SYNTHETIC_RESIN) { molten() colorTint(Color(0xff6633)) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index e8e58a159..304353533 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -102,6 +102,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.NAPHTHA, "Naphtha") addFluid(RagiumFluids.FUEL, "Fuel") addFluid(RagiumFluids.ANTI_RUST_OIL, "Anti-rust Oil") + addFluid(RagiumFluids.MOLTEN_PLASTIC, "Molten Plastic") addFluid(RagiumFluids.SYNTHETIC_RESIN, "Synthetic Resin") addFluid(RagiumFluids.NITRIC_ACID, "Nitric Acid") addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "Liquid Explosive") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 9f8d7579f..2ce90c253 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -98,6 +98,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.NAPHTHA, "ナフサ") addFluid(RagiumFluids.FUEL, "燃料油") addFluid(RagiumFluids.ANTI_RUST_OIL, "防錆油") + addFluid(RagiumFluids.MOLTEN_PLASTIC, "溶融プラスチック") addFluid(RagiumFluids.SYNTHETIC_RESIN, "合成樹脂") addFluid(RagiumFluids.NITRIC_ACID, "硝酸") addFluid(RagiumFluids.LIQUID_EXPLOSIVE, "液体爆薬") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 35e66cfee..977037ca2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -44,6 +44,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP add(RagiumFluids.WOOD_TAR) add(RagiumFluids.COAL_TAR) add(RagiumFluids.CRUDE_OIL) + add(RagiumFluids.MOLTEN_PLASTIC) add(RagiumFluids.SYNTHETIC_RESIN) add(RagiumFluids.SULFURIC_ACID) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index b30fa7323..6e778b706 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -121,6 +121,8 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } private fun oilRefining() { + plastic() + // Soul Sand -> Sand + Crude Oil RagiumRecipeBuilders.pyrolyzing { ingredient { items { +Items.SOUL_SAND } } @@ -162,39 +164,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId replace RagiumFluids.NAPHTHA.idOrThrow }.save(exporter) - // Naphtha -> Plastic - RagiumRecipeBuilders.freezing { - ingredient { - +holderSet(RagiumFluids.NAPHTHA) - amount /= 2 - } - result { +RagiumItems.PLASTIC_PLATE } - }.save(exporter) - RagiumRecipeBuilders.reacting { - primaryIngredient { - +holderSet(RagiumFluids.NAPHTHA) - amount /= 2 - } - secondaryIngredient { - +holderSet(RagiumFluids.OXYGEN) - amount /= 4 - } - itemResult { - +RagiumItems.PLASTIC_PLATE - count = 2 - } - }.save(exporter) - // Synthetic Fiber + Nitrogen -> Carbon Fiber - // Carbon Fiber + Resin -> CFRP Plate - RagiumRecipeBuilders.bathing { - itemIngredient { items { +RagiumItems.CARBON_FIBER } } - fluidIngredient { - +holderSet(RagiumTags.Fluids.RESINS) - amount /= 4 - } - result { +RagiumItems.CFRP_PLATE } - }.save(exporter) - // Naphtha + Redstone -> Anti-rust Oil RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } @@ -219,22 +188,64 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId suffix "_from_tar" }.save(exporter) + } + private fun plastic() { + // Naphtha + O2 -> Molten Plastic + RagiumRecipeBuilders.reacting { + primaryIngredient { + +holderSet(RagiumFluids.NAPHTHA) + amount /= 2 + } + secondaryIngredient { + +holderSet(RagiumFluids.OXYGEN) + amount /= 4 + } + fluidResult { + +RagiumFluids.MOLTEN_PLASTIC + amount = 180 + } + }.save(exporter) + // Molten Plastic -> Plastic + RagiumRecipeBuilders.freezing { + ingredient { + +holderSet(RagiumFluids.MOLTEN_PLASTIC) + amount = 90 + } + result { +RagiumItems.PLASTIC_PLATE } + }.save(exporter) + + // Plastic -> Synthetic XX + listOf( + RagiumItems.SYNTHETIC_FEATHER, + RagiumItems.SYNTHETIC_FIBER, + RagiumItems.SYNTHETIC_LEATHER + ).forEach { + VanillaRecipeBuilders.stonecutting { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + result { +it } + }.save(exporter) + } + + // Alcohol -> Aldehyde + // Aromatic Compound + Aldehyde -> Synthetic Resin // Aromatic Compound + Water -> Synthetic Resin RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.AROMATIC_COMPOUND) } secondaryIngredient { +waterSet() } fluidResult { +RagiumFluids.SYNTHETIC_RESIN } }.save(exporter) - // Aluminum + ??? -> Black Steel + + // Synthetic Fiber + Nitrogen -> Carbon Fiber + // Carbon Fiber + Resin -> CFRP Plate RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Metal.ALUMINUM) } - /*fluidIngredient { - +holderSet(RagiumFluids.COLORED_RESINS.black) + itemIngredient { items { +RagiumItems.CARBON_FIBER } } + fluidIngredient { + +holderSet(RagiumTags.Fluids.RESINS) amount /= 4 - }*/ - result { +RagiumItems.getOrThrow(HTItemPart.INGOT, RagiumMaterial.Alloy.BLACK_STEEL) } - } + } + result { +RagiumItems.CFRP_PLATE } + }.save(exporter) } // Chemical // diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 502fe6df3..7dee13191 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -63,17 +63,6 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut count = 4 } }.save(exporter) - // Synthetic - listOf( - RagiumItems.SYNTHETIC_FEATHER, - RagiumItems.SYNTHETIC_FIBER, - RagiumItems.SYNTHETIC_LEATHER - ).forEach { - VanillaRecipeBuilders.stonecutting { - ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } - result { +it } - }.save(exporter) - } // Splash Bottle VanillaRecipeBuilders.shapeless { ingredient { +holderSet(Tags.Items.GUNPOWDERS) } diff --git a/src/generated/resources/assets/ragium/items/molten_plastic_bucket.json b/src/generated/resources/assets/ragium/items/molten_plastic_bucket.json new file mode 100644 index 000000000..f85fd43f5 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/molten_plastic_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:molten_plastic", + "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/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 165fa0956..452a4d872 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -87,6 +87,7 @@ "block.ragium.molten_ender": "Resonant Ender", "block.ragium.molten_glass": "Molten Glass", "block.ragium.molten_glowstone": "Energized Glowstone", + "block.ragium.molten_plastic": "Molten Plastic", "block.ragium.molten_redstone": "Destabilized Redstone", "block.ragium.naphtha": "Naphtha", "block.ragium.nether_niter_ore": "Nether Niter Ore", @@ -277,6 +278,7 @@ "item.ragium.molten_ender_bucket": "Resonant Ender Bucket", "item.ragium.molten_glass_bucket": "Molten Glass Bucket", "item.ragium.molten_glowstone_bucket": "Energized Glowstone Bucket", + "item.ragium.molten_plastic_bucket": "Molten Plastic Bucket", "item.ragium.molten_redstone_bucket": "Destabilized Redstone Bucket", "item.ragium.mortar": "Mortar", "item.ragium.naphtha_bucket": "Naphtha Bucket", @@ -445,6 +447,7 @@ "tag.fluid.c.molten_ender": "Resonant Ender", "tag.fluid.c.molten_glass": "Molten Glass", "tag.fluid.c.molten_glowstone": "Energized Glowstone", + "tag.fluid.c.molten_plastic": "Molten Plastic", "tag.fluid.c.molten_redstone": "Destabilized Redstone", "tag.fluid.c.naphtha": "Naphtha", "tag.fluid.c.nitric_acid": "Nitric Acid", @@ -493,6 +496,7 @@ "tag.item.c.buckets.molten_ender": "Resonant Ender Bucket", "tag.item.c.buckets.molten_glass": "Molten Glass Bucket", "tag.item.c.buckets.molten_glowstone": "Energized Glowstone Bucket", + "tag.item.c.buckets.molten_plastic": "Molten Plastic Bucket", "tag.item.c.buckets.molten_redstone": "Destabilized Redstone Bucket", "tag.item.c.buckets.naphtha": "Naphtha Bucket", "tag.item.c.buckets.nitric_acid": "Nitric Acid Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 34f78e2e2..6eb39aaee 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -87,6 +87,7 @@ "block.ragium.molten_ender": "共振エンダー", "block.ragium.molten_glass": "溶融ガラス", "block.ragium.molten_glowstone": "活性グロウストーン", + "block.ragium.molten_plastic": "溶融プラスチック", "block.ragium.molten_redstone": "励起レッドストーン", "block.ragium.naphtha": "ナフサ", "block.ragium.nether_niter_ore": "ネザー硝石鉱石", @@ -277,6 +278,7 @@ "item.ragium.molten_ender_bucket": "共振エンダー入りバケツ", "item.ragium.molten_glass_bucket": "溶融ガラス入りバケツ", "item.ragium.molten_glowstone_bucket": "活性グロウストーン入りバケツ", + "item.ragium.molten_plastic_bucket": "溶融プラスチック入りバケツ", "item.ragium.molten_redstone_bucket": "励起レッドストーン入りバケツ", "item.ragium.mortar": "モルタル", "item.ragium.naphtha_bucket": "ナフサ入りバケツ", @@ -445,6 +447,7 @@ "tag.fluid.c.molten_ender": "共振エンダー", "tag.fluid.c.molten_glass": "溶融ガラス", "tag.fluid.c.molten_glowstone": "活性グロウストーン", + "tag.fluid.c.molten_plastic": "溶融プラスチック", "tag.fluid.c.molten_redstone": "励起レッドストーン", "tag.fluid.c.naphtha": "ナフサ", "tag.fluid.c.nitric_acid": "硝酸", @@ -493,6 +496,7 @@ "tag.item.c.buckets.molten_ender": "共振エンダー入りバケツ", "tag.item.c.buckets.molten_glass": "溶融ガラス入りバケツ", "tag.item.c.buckets.molten_glowstone": "活性グロウストーン入りバケツ", + "tag.item.c.buckets.molten_plastic": "溶融プラスチック入りバケツ", "tag.item.c.buckets.molten_redstone": "励起レッドストーン入りバケツ", "tag.item.c.buckets.naphtha": "ナフサ入りバケツ", "tag.item.c.buckets.nitric_acid": "硝酸入りバケツ", diff --git a/src/generated/resources/data/c/tags/fluid/molten_plastic.json b/src/generated/resources/data/c/tags/fluid/molten_plastic.json new file mode 100644 index 000000000..ef8fada53 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/molten_plastic.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:molten_plastic" + ] +} \ 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 950bcc274..a3540cb58 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -34,6 +34,7 @@ "#c:buckets/molten_ender", "#c:buckets/molten_glass", "#c:buckets/molten_glowstone", + "#c:buckets/molten_plastic", "#c:buckets/molten_redstone", "#c:buckets/naphtha", "#c:buckets/nitric_acid", diff --git a/src/generated/resources/data/c/tags/item/buckets/molten_plastic.json b/src/generated/resources/data/c/tags/item/buckets/molten_plastic.json new file mode 100644 index 000000000..48b0e6347 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/molten_plastic.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:molten_plastic_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json b/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json index b3b05987f..4b3ec7ed4 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json +++ b/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json @@ -1,8 +1,8 @@ { "type": "ragium:freezing", "ingredient": { - "amount": 500, - "fluids": "#c:naphtha" + "amount": 90, + "fluids": "#c:molten_plastic" }, "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/reacting/plastic_plate.json b/src/generated/resources/data/ragium/recipe/reacting/molten_plastic.json similarity index 73% rename from src/generated/resources/data/ragium/recipe/reacting/plastic_plate.json rename to src/generated/resources/data/ragium/recipe/reacting/molten_plastic.json index 13da8c0df..73ceb2da5 100644 --- a/src/generated/resources/data/ragium/recipe/reacting/plastic_plate.json +++ b/src/generated/resources/data/ragium/recipe/reacting/molten_plastic.json @@ -1,8 +1,8 @@ { "type": "ragium:reacting", - "item_result": { - "count": 2, - "id": "ragium:plastic_plate" + "fluid_result": { + "amount": 180, + "id": "ragium:molten_plastic" }, "primary_ingredient": { "amount": 500, diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 43a2d7bd7..8e0fe12a5 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -187,6 +187,7 @@ "molten_ender", "molten_glass", "molten_glowstone", + "molten_plastic", "molten_redstone", "naphtha", "nitric_acid", @@ -329,6 +330,7 @@ "molten_ender_bucket", "molten_glass_bucket", "molten_glowstone_bucket", + "molten_plastic_bucket", "molten_redstone_bucket", "mortar", "naphtha_bucket", @@ -528,6 +530,7 @@ "molten_ender", "molten_glass", "molten_glowstone", + "molten_plastic", "molten_redstone", "naphtha", "nitric_acid", diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index 5f369ccb1..dd6b432d5 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -184,6 +184,9 @@ data object RagiumFluids { @JvmField val ANTI_RUST_OIL: HTFluidContent.Virtual = REGISTER.registerVirtual("anti_rust_oil") { properties = liquid() } + @JvmField + val MOLTEN_PLASTIC: HTFluidContent.Virtual = REGISTER.registerVirtual("molten_plastic") { properties = molten() } + @JvmField val SYNTHETIC_RESIN: HTFluidContent.Virtual = REGISTER.registerVirtual("synthetic_resin") { properties = liquid() } From 3a497c915d740fcaa121d9313daa367bf9ce08f2 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 21:23:53 +0900 Subject: [PATCH 32/38] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E6=B6=B2=E4=BD=93=E3=82=92=E8=BF=BD=E5=8A=A0=20-=20Alcohol=20/?= =?UTF-8?q?=20=E3=82=A2=E3=83=AB=E3=82=B3=E3=83=BC=E3=83=AB=20-=20Aldehyde?= =?UTF-8?q?=20/=20=E3=82=A2=E3=83=AB=E3=83=87=E3=83=92=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 8 +++++++ .../data/lang/RagiumEnglishLangProvider.kt | 2 ++ .../data/lang/RagiumJapaneseLangProvider.kt | 2 ++ .../data/recipe/RagiumCommonRecipeProvider.kt | 22 +++++++++++++++---- .../data/tag/RagiumFluidTagsProvider.kt | 13 +++++++++++ .../ragium/data/tag/RagiumItemTagsProvider.kt | 8 +++---- .../assets/ragium/items/alcohol_bucket.json | 12 ++++++++++ .../assets/ragium/items/aldehyde_bucket.json | 12 ++++++++++ .../resources/assets/ragium/lang/en_us.json | 8 +++++++ .../resources/assets/ragium/lang/ja_jp.json | 8 +++++++ .../resources/data/c/tags/fluid/alcohol.json | 5 +++++ .../resources/data/c/tags/fluid/aldehyde.json | 5 +++++ .../resources/data/c/tags/item/buckets.json | 2 ++ .../data/c/tags/item/buckets/alcohol.json | 5 +++++ .../data/c/tags/item/buckets/aldehyde.json | 5 +++++ .../recipe/reacting/synthetic_resin.json | 4 ++-- .../data/ragium/recipe/refining/aldehyde.json | 12 ++++++++++ .../data/ragium/recipe/refining/wood_tar.json | 12 ++++++++++ .../data/ragium/tags/fluid/alcohols.json | 21 ++++++++++++++++++ .../data/ragium/tags/fluid/aldehydes.json | 13 +++++++++++ .../resources/reports/ragium/registries.json | 6 +++++ .../hiiragi283/lib/data/tag/HTTagBuilder.kt | 4 ++-- .../hiiragi283/lib/data/tag/HTTagsProvider.kt | 8 ------- .../hiiragi283/ragium/api/tag/RagiumTags.kt | 12 ++++++++++ .../ragium/common/fluid/RagiumFluids.kt | 6 +++++ 25 files changed, 195 insertions(+), 20 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/alcohol_bucket.json create mode 100644 src/generated/resources/assets/ragium/items/aldehyde_bucket.json create mode 100644 src/generated/resources/data/c/tags/fluid/alcohol.json create mode 100644 src/generated/resources/data/c/tags/fluid/aldehyde.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/alcohol.json create mode 100644 src/generated/resources/data/c/tags/item/buckets/aldehyde.json create mode 100644 src/generated/resources/data/ragium/recipe/refining/aldehyde.json create mode 100644 src/generated/resources/data/ragium/recipe/refining/wood_tar.json create mode 100644 src/generated/resources/data/ragium/tags/fluid/alcohols.json create mode 100644 src/generated/resources/data/ragium/tags/fluid/aldehydes.json diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index eaff7f62f..35e134d2a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -146,6 +146,14 @@ data object RagiumClient : HTClientMod() { molten() colorTint(Color(0x333366)) } + register.register(RagiumFluids.ALCOHOL) { + transparent() + colorTint(Color(0xcc99ff)) + } + register.register(RagiumFluids.ALDEHYDE) { + transparent() + colorTint(Color(0xcc66ff)) + } register.register(RagiumFluids.AROMATIC_COMPOUND) { transparent() colorTint(Color(0xffcc99)) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 304353533..ec525317a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -97,6 +97,8 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFluid(RagiumFluids.WOOD_TAR, "Wood Tar") addFluid(RagiumFluids.COAL_TAR, "Coal Tar") + addFluid(RagiumFluids.ALCOHOL, "Alcohol") + addFluid(RagiumFluids.ALDEHYDE, "Aldehyde") addFluid(RagiumFluids.AROMATIC_COMPOUND, "Aromatic Compound") addFluid(RagiumFluids.CRUDE_OIL, "Crude Oil") addFluid(RagiumFluids.NAPHTHA, "Naphtha") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 2ce90c253..ba0b821d2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -93,6 +93,8 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFluid(RagiumFluids.WOOD_TAR, "木タール") addFluid(RagiumFluids.COAL_TAR, "石炭タール") + addFluid(RagiumFluids.ALCOHOL, "アルコール") + addFluid(RagiumFluids.ALDEHYDE, "アルデヒド") addFluid(RagiumFluids.AROMATIC_COMPOUND, "芳香族化合物") addFluid(RagiumFluids.CRUDE_OIL, "原油") addFluid(RagiumFluids.NAPHTHA, "ナフサ") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 6e778b706..f5563a79e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -75,7 +75,15 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu time /= 2 }.save(exporter) - // Wood Tar -> Alcohol + Aromatic Compound TODO + // Wood Tar -> Alcohol + Aromatic Compound + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumFluids.WOOD_TAR) } + fluidResult { + +RagiumFluids.ALCOHOL + amount = 500 + } + recipeId replace RagiumFluids.WOOD_TAR.idOrThrow + }.save(exporter) } private fun coal() { @@ -228,12 +236,18 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } // Alcohol -> Aldehyde + RagiumRecipeBuilders.refining { + ingredient { +holderSet(RagiumTags.Fluids.ALCOHOLS) } + fluidResult { +RagiumFluids.ALDEHYDE } + }.save(exporter) // Aromatic Compound + Aldehyde -> Synthetic Resin - // Aromatic Compound + Water -> Synthetic Resin RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.AROMATIC_COMPOUND) } - secondaryIngredient { +waterSet() } - fluidResult { +RagiumFluids.SYNTHETIC_RESIN } + secondaryIngredient { +holderSet(RagiumTags.Fluids.ALDEHYDES) } + fluidResult { + +RagiumFluids.SYNTHETIC_RESIN + amount *= 2 + } }.save(exporter) // Synthetic Fiber + Nitrogen -> Carbon Fiber diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumFluidTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumFluidTagsProvider.kt index 5cfa62400..07d29470e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumFluidTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumFluidTagsProvider.kt @@ -1,6 +1,9 @@ package hiiragi283.ragium.data.tag +import hiiragi283.lib.HTConstants import hiiragi283.lib.data.tag.HTFluidTagsProvider +import hiiragi283.lib.data.tag.HTTagDependType +import hiiragi283.lib.resource.toId import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.fluid.RagiumFluids @@ -16,5 +19,15 @@ class RagiumFluidTagsProvider(output: PackOutput, lookupProvider: CompletableFut builder(RagiumTags.Fluids.RESINS) .addContentTag(RagiumFluids.RESIN) .addContentTag(RagiumFluids.SYNTHETIC_RESIN) + builder(RagiumTags.Fluids.ALCOHOLS) + .addContentTag(RagiumFluids.ALCOHOL) + .addTag(HTConstants.COMMON.toId("methanol"), type = HTTagDependType.OPTIONAL) + .addTag(HTConstants.COMMON.toId("ethanol"), type = HTTagDependType.OPTIONAL) + .addTag(HTConstants.COMMON.toId("bioethanol"), type = HTTagDependType.OPTIONAL) + .addTag(HTConstants.COMMON.toId("bio_ethanol"), type = HTTagDependType.OPTIONAL) + builder(RagiumTags.Fluids.ALDEHYDES) + .addContentTag(RagiumFluids.ALDEHYDE) + .addTag(HTConstants.COMMON.toId("formaldehyde"), type = HTTagDependType.OPTIONAL) + .addTag(HTConstants.COMMON.toId("acetaldehyde"), type = HTTagDependType.OPTIONAL) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 51dadcaaa..81530c05a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -31,7 +31,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu HTBlockItemTagsProvider.forItem(builder(item)) }.run() // Material - builder(CommonTagPrefixes.GEM, RagiumMaterial.Gem.ECHO).add(createKey(vanillaId("echo_shard"))) + builder(CommonTagPrefixes.GEM, RagiumMaterial.Gem.ECHO).add(vanillaId("echo_shard")) RagiumItems.MATERIAL_ITEMS .forEach { (part: HTItemPart, material: RagiumMaterial, item: HTSimpleValueWithKey) -> @@ -63,15 +63,15 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(Tags.Items.SLIME_BALLS).add(RagiumItems.STICKY_BALL) builder(HTCommonTags.Items.COAL_COKE).add(RagiumItems.COAL_COKE) - builder(HTCommonTags.Items.PAPER).add(createKey(vanillaId("paper"))) + builder(HTCommonTags.Items.PAPER).add(vanillaId("paper")) builder(HTCommonTags.Items.PITCH_COKE).add(RagiumItems.PITCH_COKE) builder(HTCommonTags.Items.PLASTICS).add(RagiumItems.PLASTIC_PLATE) builder(HTCommonTags.Items.SILICON).add(RagiumItems.CRUDE_SILICON) builder(RagiumTags.Items.COALS) .add(RagiumItems.BAMBOO_CHARCOAL) - .add(createKey(vanillaId("charcoal"))) - .add(createKey(vanillaId("coal"))) + .add(vanillaId("charcoal")) + .add(vanillaId("coal")) builder(RagiumTags.Items.COKES) .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) diff --git a/src/generated/resources/assets/ragium/items/alcohol_bucket.json b/src/generated/resources/assets/ragium/items/alcohol_bucket.json new file mode 100644 index 000000000..350de685e --- /dev/null +++ b/src/generated/resources/assets/ragium/items/alcohol_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:alcohol", + "textures": { + "base": "minecraft:item/bucket", + "fluid": "neoforge:item/mask/bucket_fluid", + "particle": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/aldehyde_bucket.json b/src/generated/resources/assets/ragium/items/aldehyde_bucket.json new file mode 100644 index 000000000..853f45a16 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/aldehyde_bucket.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "neoforge:fluid_container", + "apply_fluid_luminosity": false, + "fluid": "ragium:aldehyde", + "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 452a4d872..4a1409bce 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -17,6 +17,8 @@ "advancement.ragium.root.title": "Ragium", "advancement.ragium.sooty_iron.desc": "Craft a Sooty Iron Ingot", "advancement.ragium.sooty_iron.title": "Acquire Blackware", + "block.ragium.alcohol": "Alcohol", + "block.ragium.aldehyde": "Aldehyde", "block.ragium.alloy_smelter": "Alloy Smelter", "block.ragium.alumina_solution": "Alumina Solution", "block.ragium.aluminum_block": "Block of Aluminum", @@ -202,6 +204,8 @@ "item.minecraft.tipped_arrow.effect.nausea": "Arrow of Nausea", "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", "item.ragium.alclad_plate": "Alclad Plate", + "item.ragium.alcohol_bucket": "Alcohol Bucket", + "item.ragium.aldehyde_bucket": "Aldehyde Bucket", "item.ragium.alumina_dust": "Alumina Dust", "item.ragium.alumina_solution_bucket": "Alumina Solution Bucket", "item.ragium.aluminum_ingot": "Aluminum Ingot", @@ -413,6 +417,8 @@ "recipe_type.ragium.refining": "Refining", "recipe_type.ragium.resource.extracting": "Resource Extracting", "recipe_type.ragium.washing": "Washing", + "tag.fluid.c.alcohol": "Alcohol", + "tag.fluid.c.aldehyde": "Aldehyde", "tag.fluid.c.alumina_solution": "Alumina Solution", "tag.fluid.c.anti_rust_oil": "Anti-rust Oil", "tag.fluid.c.aromatic_compound": "Aromatic Compound", @@ -462,6 +468,8 @@ "tag.fluid.c.sulfuric_acid": "Sulfuric Acid", "tag.fluid.c.synthetic_resin": "Synthetic Resin", "tag.fluid.c.wood_tar": "Wood Tar", + "tag.item.c.buckets.alcohol": "Alcohol Bucket", + "tag.item.c.buckets.aldehyde": "Aldehyde Bucket", "tag.item.c.buckets.alumina_solution": "Alumina Solution Bucket", "tag.item.c.buckets.anti_rust_oil": "Anti-rust Oil Bucket", "tag.item.c.buckets.aromatic_compound": "Aromatic Compound Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 6eb39aaee..83e13b8b8 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -17,6 +17,8 @@ "advancement.ragium.root.title": "ラギウム", "advancement.ragium.sooty_iron.desc": "煤鉄をつくる", "advancement.ragium.sooty_iron.title": "黒鉄(くろがね)を手に入れる", + "block.ragium.alcohol": "アルコール", + "block.ragium.aldehyde": "アルデヒド", "block.ragium.alloy_smelter": "合金炉", "block.ragium.alumina_solution": "アルミナ水溶液", "block.ragium.aluminum_block": "アルミニウムブロック", @@ -202,6 +204,8 @@ "item.minecraft.tipped_arrow.effect.nausea": "吐き気の矢", "item.minecraft.tipped_arrow.effect.wither": "衰退の矢", "item.ragium.alclad_plate": "アルクラッド板", + "item.ragium.alcohol_bucket": "アルコール入りバケツ", + "item.ragium.aldehyde_bucket": "アルデヒド入りバケツ", "item.ragium.alumina_dust": "アルミナの粉", "item.ragium.alumina_solution_bucket": "アルミナ水溶液入りバケツ", "item.ragium.aluminum_ingot": "アルミニウムインゴット", @@ -413,6 +417,8 @@ "recipe_type.ragium.refining": "蒸留", "recipe_type.ragium.resource.extracting": "資源採集", "recipe_type.ragium.washing": "洗浄", + "tag.fluid.c.alcohol": "アルコール", + "tag.fluid.c.aldehyde": "アルデヒド", "tag.fluid.c.alumina_solution": "アルミナ水溶液", "tag.fluid.c.anti_rust_oil": "防錆油", "tag.fluid.c.aromatic_compound": "芳香族化合物", @@ -462,6 +468,8 @@ "tag.fluid.c.sulfuric_acid": "硫酸", "tag.fluid.c.synthetic_resin": "合成樹脂", "tag.fluid.c.wood_tar": "木タール", + "tag.item.c.buckets.alcohol": "アルコール入りバケツ", + "tag.item.c.buckets.aldehyde": "アルデヒド入りバケツ", "tag.item.c.buckets.alumina_solution": "アルミナ水溶液入りバケツ", "tag.item.c.buckets.anti_rust_oil": "防錆油入りバケツ", "tag.item.c.buckets.aromatic_compound": "芳香族化合物入りバケツ", diff --git a/src/generated/resources/data/c/tags/fluid/alcohol.json b/src/generated/resources/data/c/tags/fluid/alcohol.json new file mode 100644 index 000000000..2492e1131 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/alcohol.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:alcohol" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/fluid/aldehyde.json b/src/generated/resources/data/c/tags/fluid/aldehyde.json new file mode 100644 index 000000000..d2d87b5c4 --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/aldehyde.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:aldehyde" + ] +} \ 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 a3540cb58..87c2a133c 100644 --- a/src/generated/resources/data/c/tags/item/buckets.json +++ b/src/generated/resources/data/c/tags/item/buckets.json @@ -1,5 +1,7 @@ { "values": [ + "#c:buckets/alcohol", + "#c:buckets/aldehyde", "#c:buckets/alumina_solution", "#c:buckets/anti_rust_oil", "#c:buckets/aromatic_compound", diff --git a/src/generated/resources/data/c/tags/item/buckets/alcohol.json b/src/generated/resources/data/c/tags/item/buckets/alcohol.json new file mode 100644 index 000000000..e2e685975 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/alcohol.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:alcohol_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/buckets/aldehyde.json b/src/generated/resources/data/c/tags/item/buckets/aldehyde.json new file mode 100644 index 000000000..c9d43cb4e --- /dev/null +++ b/src/generated/resources/data/c/tags/item/buckets/aldehyde.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:aldehyde_bucket" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/synthetic_resin.json b/src/generated/resources/data/ragium/recipe/reacting/synthetic_resin.json index a9b089e3c..afe400349 100644 --- a/src/generated/resources/data/ragium/recipe/reacting/synthetic_resin.json +++ b/src/generated/resources/data/ragium/recipe/reacting/synthetic_resin.json @@ -1,7 +1,7 @@ { "type": "ragium:reacting", "fluid_result": { - "amount": 1000, + "amount": 2000, "id": "ragium:synthetic_resin" }, "primary_ingredient": { @@ -10,7 +10,7 @@ }, "secondary_ingredient": { "amount": 1000, - "fluids": "#c:water" + "fluids": "#ragium:aldehydes" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/aldehyde.json b/src/generated/resources/data/ragium/recipe/refining/aldehyde.json new file mode 100644 index 000000000..08c48c3d3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/refining/aldehyde.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:refining", + "fluid_result": { + "amount": 1000, + "id": "ragium:aldehyde" + }, + "ingredient": { + "amount": 1000, + "fluids": "#ragium:alcohols" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/wood_tar.json b/src/generated/resources/data/ragium/recipe/refining/wood_tar.json new file mode 100644 index 000000000..6ae089077 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/refining/wood_tar.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:refining", + "fluid_result": { + "amount": 500, + "id": "ragium:alcohol" + }, + "ingredient": { + "amount": 1000, + "fluids": "#c:wood_tar" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/fluid/alcohols.json b/src/generated/resources/data/ragium/tags/fluid/alcohols.json new file mode 100644 index 000000000..8d59226b0 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/fluid/alcohols.json @@ -0,0 +1,21 @@ +{ + "values": [ + { + "id": "#c:bio_ethanol", + "required": false + }, + { + "id": "#c:bioethanol", + "required": false + }, + { + "id": "#c:ethanol", + "required": false + }, + { + "id": "#c:methanol", + "required": false + }, + "#c:alcohol" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/fluid/aldehydes.json b/src/generated/resources/data/ragium/tags/fluid/aldehydes.json new file mode 100644 index 000000000..6b507b892 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/fluid/aldehydes.json @@ -0,0 +1,13 @@ +{ + "values": [ + { + "id": "#c:acetaldehyde", + "required": false + }, + { + "id": "#c:formaldehyde", + "required": false + }, + "#c:aldehyde" + ] +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 8e0fe12a5..4eebeda69 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -130,6 +130,8 @@ "owner_id" ], "minecraft:fluid": [ + "alcohol", + "aldehyde", "alumina_solution", "anti_rust_oil", "aromatic_compound", @@ -212,6 +214,8 @@ ], "minecraft:item": [ "alclad_plate", + "alcohol_bucket", + "aldehyde_bucket", "alloy_smelter", "alumina_dust", "alumina_solution_bucket", @@ -502,6 +506,8 @@ "potion" ], "neoforge:fluid_type": [ + "alcohol", + "aldehyde", "alumina_solution", "anti_rust_oil", "aromatic_compound", diff --git a/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagBuilder.kt index a5d5f4091..c47ff1f7e 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagBuilder.kt @@ -37,7 +37,7 @@ fun interface HTTagBuilder : Consumer { * @param id 要素のID * @param type このエントリの依存関係 */ - private fun add(id: Identifier, type: HTTagDependType = HTTagDependType.REQUIRED): HTTagBuilder = apply { + fun add(id: Identifier, type: HTTagDependType = HTTagDependType.REQUIRED): HTTagBuilder = apply { when (type) { HTTagDependType.REQUIRED -> TagEntry.element(id) HTTagDependType.OPTIONAL -> TagEntry.optionalElement(id) @@ -57,7 +57,7 @@ fun interface HTTagBuilder : Consumer { * @param id 子タグのID * @param type このエントリの依存関係 */ - private fun addTag(id: Identifier, type: HTTagDependType = HTTagDependType.REQUIRED): HTTagBuilder = apply { + fun addTag(id: Identifier, type: HTTagDependType = HTTagDependType.REQUIRED): HTTagBuilder = apply { when (type) { HTTagDependType.REQUIRED -> TagEntry.tag(id) HTTagDependType.OPTIONAL -> TagEntry.optionalTag(id) diff --git a/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagsProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagsProvider.kt index a4ba18493..ad965b863 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagsProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/tag/HTTagsProvider.kt @@ -2,13 +2,10 @@ package hiiragi283.lib.data.tag import hiiragi283.lib.collection.SetMultiMapBuilder import hiiragi283.lib.registry.RegistryKey -import hiiragi283.lib.registry.createKey import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.data.tags.TagsProvider -import net.minecraft.resources.Identifier -import net.minecraft.resources.ResourceKey import net.minecraft.tags.TagEntry import net.minecraft.tags.TagKey import java.util.concurrent.CompletableFuture @@ -83,9 +80,4 @@ abstract class HTTagsProvider : TagsProvider { builder.addTag(tagKeyIn) builder(tagKeyIn) } - - /** - * @since 26.1.7 - */ - protected fun createKey(id: Identifier): ResourceKey = registryKey.createKey(id) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt index d4eddbe14..6880e9da8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt @@ -43,6 +43,18 @@ data object RagiumTags { @JvmField val RESINS: TagKey = create("resins") + /** + * @since 26.1.8 + */ + @JvmField + val ALCOHOLS: TagKey = create("alcohols") + + /** + * @since 26.1.8 + */ + @JvmField + val ALDEHYDES: TagKey = create("aldehydes") + @JvmStatic private fun create(vararg path: String): TagKey = FluidTags.create(RagiumAPI.id(*path)) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt index dd6b432d5..9f00bddb5 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/RagiumFluids.kt @@ -150,6 +150,12 @@ data object RagiumFluids { @JvmField val COAL_TAR: HTFluidContent.Virtual = REGISTER.registerVirtual("coal_tar") { properties = liquid() } + @JvmField + val ALCOHOL: HTFluidContent.Virtual = REGISTER.registerVirtual("alcohol") { properties = liquid() } + + @JvmField + val ALDEHYDE: HTFluidContent.Virtual = REGISTER.registerVirtual("aldehyde") { properties = liquid() } + @JvmField val AROMATIC_COMPOUND: HTFluidContent.Flowing = REGISTER.registerFlowing("aromatic_compound") { properties = liquid() From a21247c23dc5df567bf13cfad45053b106077461 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 22:57:35 +0900 Subject: [PATCH 33/38] =?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=8CAluminum=20Fluorid?= =?UTF-8?q?e=20Dust=20/=20=E3=83=95=E3=83=83=E5=8C=96=E3=82=A2=E3=83=AB?= =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=82=A6=E3=83=A0=E3=81=AE=E7=B2=89=E3=80=8D?= =?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 --- .../data/lang/RagiumEnglishLangProvider.kt | 1 + .../data/lang/RagiumJapaneseLangProvider.kt | 1 + .../data/recipe/RagiumCommonRecipeProvider.kt | 30 +++++++++++++------ .../recipe/RagiumElectronicsRecipeProvider.kt | 7 ++--- .../recipe/RagiumMechanicalRecipeProvider.kt | 3 +- .../ragium/items/aluminum_fluoride_dust.json | 6 ++++ .../resources/assets/ragium/lang/en_us.json | 2 ++ .../resources/assets/ragium/lang/ja_jp.json | 2 ++ .../models/item/aluminum_fluoride_dust.json | 6 ++++ .../resources/data/c/tags/item/dusts.json | 1 + .../c/tags/item/dusts/aluminum_fluoride.json | 5 ++++ .../ragium/chemical/aluminum_fluoride.json | 12 ++++++++ .../ragium/recipe/alloying/cryolite_dust.json | 16 ++++++++++ ...olite.json => aluminum_fluoride_dust.json} | 8 +++-- .../resources/reports/ragium/registries.json | 2 ++ .../api/data/chemical/RagiumChemicals.kt | 10 +++++++ .../ragium/api/material/RagiumMaterial.kt | 5 ++++ 17 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json create mode 100644 src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json create mode 100644 src/generated/resources/data/ragium/ragium/chemical/aluminum_fluoride.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json rename src/generated/resources/data/ragium/recipe/reacting/{cryolite.json => aluminum_fluoride_dust.json} (64%) diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index ec525317a..b3c2e0973 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -260,6 +260,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.SODIUM_CARBONATE, "Sodium Carbonate") addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "Sodium Chloride") addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "Aluminum Oxide") + addFromKey(RagiumChemicals.ALUMINUM_FLUORIDE, "Aluminum Fluoride") addFromKey(RagiumChemicals.SILICON_DIOXIDE, "Silicon Dioxide") addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "Sulfur Dioxide") addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "Sulfur Trioxide") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index ba0b821d2..505479e14 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -256,6 +256,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addFromKey(RagiumChemicals.SODIUM_CARBONATE, "炭酸ナトリウム") addFromKey(RagiumChemicals.SODIUM_CHLORIDE, "塩化ナトリウム") addFromKey(RagiumChemicals.ALUMINUM_OXIDE, "酸化アルミニウム") + addFromKey(RagiumChemicals.ALUMINUM_FLUORIDE, "フッ化アルミニウム") addFromKey(RagiumChemicals.SILICON_DIOXIDE, "二酸化ケイ素") addFromKey(RagiumChemicals.SULFUR_DIOXIDE, "二酸化硫黄") addFromKey(RagiumChemicals.SULFUR_TRIOXIDE, "三酸化硫黄") diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index f5563a79e..c06fbb589 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -27,7 +27,6 @@ import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.Ingredient -import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.common.crafting.DifferenceIngredient import java.util.concurrent.CompletableFuture @@ -403,7 +402,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.NAOH_SOLUTION) } fluidResult { - +Fluids.WATER + water() amount *= 2 } itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } @@ -445,7 +444,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } private fun aluminum() { - // Bauxite + NaOH aq -> Alumina Solution + // Bauxite + NaOH aq -> Al(OH)3 (aq) RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.BAUXITE) } fluidIngredient { @@ -454,21 +453,34 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } result { +RagiumFluids.ALUMINA_SOLUTION } }.save(exporter) - // Alumina Solution -> Al2O3 + Water + // Al(OH)3 (aq) -> Al2O3 + Water RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) } - fluidResult { +Fluids.WATER } + fluidResult { water() } recipeId replace RagiumFluids.ALUMINA_SOLUTION.idOrThrow }.save(exporter) - // Alumina Solution + HF aq -> Na3AlF6 + // Al(OH)3 (aq) + HF (aq) -> AlF3 (aq) RagiumRecipeBuilders.reacting { primaryIngredient { +holderSet(RagiumFluids.ALUMINA_SOLUTION) } secondaryIngredient { +holderSet(RagiumFluids.HYDROFLUORIC_ACID) - amount *= 6 + amount *= 3 + } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINUM_FLUORIDE) } + fluidResult { water() } + }.save(exporter) + // 2x AlF3 + 3x Na2CO3 -> Na3AlF6 + 3x CO2 + RagiumRecipeBuilders.alloying { + ingredient { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.ALUMINUM_FLUORIDE) + count = 2 + } + extra { + +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) + count = 3 } - itemResult { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.CRYOLITE) } }.save(exporter) // Al2O3 + Cokes + Na3AlF6 -> Al RagiumRecipeBuilders.alloying { @@ -594,7 +606,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // NaCl(aq) -> H2O + NaCl RagiumRecipeBuilders.refining { ingredient { +holderSet(RagiumFluids.SALT_WATER) } - fluidResult { +Fluids.WATER } + fluidResult { water() } itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SALT) } recipeId replace RagiumFluids.SALT_WATER.idOrThrow }.save(exporter) diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt index bebd215fa..eb902c823 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumElectronicsRecipeProvider.kt @@ -7,7 +7,6 @@ import hiiragi283.ragium.common.fluid.RagiumFluids import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.world.level.biome.Biomes -import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.common.Tags import java.util.concurrent.CompletableFuture @@ -44,14 +43,14 @@ class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: Completabl RagiumRecipeBuilders.resourceExtracting { biomes { +holderSet(Tags.Biomes.IS_RIVER) } result { - +Fluids.WATER + water() amount *= 2 } recipeId suffix "_at_river" }.save(exporter) RagiumRecipeBuilders.resourceExtracting { biomes { +holderSet(Tags.Biomes.IS_WET) } - result { +Fluids.WATER } + result { water() } recipeId suffix "_at_wet_biomes" }.save(exporter) @@ -59,7 +58,7 @@ class RagiumElectronicsRecipeProvider(packOutput: PackOutput, future: Completabl RagiumRecipeBuilders.resourceExtracting { biomes { +holderSet(Tags.Biomes.IS_NETHER) } result { - +Fluids.LAVA + lava() amount /= 4 } recipeId suffix "_at_nether" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 24b92b035..4cc1b968f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -30,7 +30,6 @@ import net.minecraft.world.item.Item import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.ItemLike -import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.common.crafting.BlockTagIngredient import net.neoforged.neoforge.common.crafting.DifferenceIngredient @@ -875,7 +874,7 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable RagiumRecipeBuilders.draining { ingredient { items { +Items.WET_SPONGE } } itemResult { +Items.SPONGE } - fluidResult { +Fluids.WATER } + fluidResult { water() } }.save(exporter) // Honeycomb -> Beeswax + Honey diff --git a/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json b/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json new file mode 100644 index 000000000..06b8b3836 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/aluminum_fluoride_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 4a1409bce..9c42f7091 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -208,6 +208,7 @@ "item.ragium.aldehyde_bucket": "Aldehyde Bucket", "item.ragium.alumina_dust": "Alumina Dust", "item.ragium.alumina_solution_bucket": "Alumina Solution Bucket", + "item.ragium.aluminum_fluoride_dust": "Aluminum Fluoride Dust", "item.ragium.aluminum_ingot": "Aluminum Ingot", "item.ragium.aluminum_nugget": "Aluminum Nugget", "item.ragium.amethyst_dust": "Amethyst Dust", @@ -348,6 +349,7 @@ "item.ragium.wood_tar_bucket": "Wood Tar Bucket", "item.ragium.yellow_dye_bucket": "Yellow Dye Bucket", "ragium.chemical.ragium.aluminum": "Aluminum", + "ragium.chemical.ragium.aluminum_fluoride": "Aluminum Fluoride", "ragium.chemical.ragium.aluminum_oxide": "Aluminum Oxide", "ragium.chemical.ragium.calcium_carbonate": "Calcium Carbonate", "ragium.chemical.ragium.calcium_oxide": "Calcium Oxide", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 83e13b8b8..3b32fb652 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -208,6 +208,7 @@ "item.ragium.aldehyde_bucket": "アルデヒド入りバケツ", "item.ragium.alumina_dust": "アルミナの粉", "item.ragium.alumina_solution_bucket": "アルミナ水溶液入りバケツ", + "item.ragium.aluminum_fluoride_dust": "フッ化アルミニウムの粉", "item.ragium.aluminum_ingot": "アルミニウムインゴット", "item.ragium.aluminum_nugget": "アルミニウムナゲット", "item.ragium.amethyst_dust": "アメジストの粉", @@ -348,6 +349,7 @@ "item.ragium.wood_tar_bucket": "木タール入りバケツ", "item.ragium.yellow_dye_bucket": "黄色の染料入りバケツ", "ragium.chemical.ragium.aluminum": "アルミニウム", + "ragium.chemical.ragium.aluminum_fluoride": "フッ化アルミニウム", "ragium.chemical.ragium.aluminum_oxide": "酸化アルミニウム", "ragium.chemical.ragium.calcium_carbonate": "炭酸カルシウム", "ragium.chemical.ragium.calcium_oxide": "酸化カルシウム", diff --git a/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json b/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json new file mode 100644 index 000000000..0bcb4d9d0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/aluminum_fluoride_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index 6b2df3d9e..be617731a 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -1,6 +1,7 @@ { "values": [ "#c:dusts/alumina", + "#c:dusts/aluminum_fluoride", "#c:dusts/amethyst", "#c:dusts/bauxite", "#c:dusts/borax", diff --git a/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json b/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json new file mode 100644 index 000000000..bc7083308 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:aluminum_fluoride_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/ragium/chemical/aluminum_fluoride.json b/src/generated/resources/data/ragium/ragium/chemical/aluminum_fluoride.json new file mode 100644 index 000000000..fac774e35 --- /dev/null +++ b/src/generated/resources/data/ragium/ragium/chemical/aluminum_fluoride.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:compound", + "composition": [ + { + "element": "ragium:aluminum" + }, + { + "element": "ragium:fluorine", + "weight": 3 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json b/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json new file mode 100644 index 000000000..125afcec1 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 3, + "items": "#c:dusts/sodium_carbonate" + }, + "ingredient": { + "count": 2, + "items": "#c:dusts/aluminum_fluoride" + }, + "result": { + "count": 1, + "id": "ragium:cryolite_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/cryolite.json b/src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json similarity index 64% rename from src/generated/resources/data/ragium/recipe/reacting/cryolite.json rename to src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json index 4446d3692..dbe7c101d 100644 --- a/src/generated/resources/data/ragium/recipe/reacting/cryolite.json +++ b/src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json @@ -1,15 +1,19 @@ { "type": "ragium:reacting", + "fluid_result": { + "amount": 1000, + "id": "minecraft:water" + }, "item_result": { "count": 1, - "id": "ragium:cryolite" + "id": "ragium:aluminum_fluoride_dust" }, "primary_ingredient": { "amount": 1000, "fluids": "#c:alumina_solution" }, "secondary_ingredient": { - "amount": 6000, + "amount": 3000, "fluids": "#c:hydrofluoric_acid" }, "time": 200 diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 4eebeda69..195d44278 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -220,6 +220,7 @@ "alumina_dust", "alumina_solution_bucket", "aluminum_block", + "aluminum_fluoride_dust", "aluminum_ingot", "aluminum_nugget", "amethyst_dust", @@ -564,6 +565,7 @@ ], "ragium:chemical": [ "aluminum", + "aluminum_fluoride", "aluminum_oxide", "calcium_carbonate", "calcium_oxide", diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt index 88c74005d..f4285773b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/chemical/RagiumChemicals.kt @@ -99,6 +99,9 @@ data object RagiumChemicals { @JvmField val ALUMINUM_OXIDE: ResourceKey = create("aluminum_oxide") + @JvmField + val ALUMINUM_FLUORIDE: ResourceKey = create("aluminum_fluoride") + @JvmField val SILICON_DIOXIDE: ResourceKey = create("silicon_dioxide") @@ -245,6 +248,13 @@ data object RagiumChemicals { add(RagiumElements.OXYGEN, 3) } ) + context.register( + ALUMINUM_FLUORIDE, + HTCompoundChemical.build(context) { + add(RagiumElements.ALUMINUM, 1) + add(RagiumElements.FLUORINE, 3) + } + ) context.register( SILICON_DIOXIDE, HTCompoundChemical.build(context) { diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index f6eb30642..efde60e46 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -117,6 +117,11 @@ sealed interface RagiumMaterial : */ ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), + /** + * @since 26.1.8 + */ + ALUMINUM_FLUORIDE("Aluminum Fluoride", "フッ化アルミニウム", RagiumChemicals.ALUMINUM_FLUORIDE), + /** * @since 26.1.7 */ From 15d03d77f287cc4ac9e28f4dc36baf1558a71aa3 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Thu, 1 Oct 2026 23:55:43 +0900 Subject: [PATCH 34/38] =?UTF-8?q?feat:=20=E6=A9=9F=E6=A2=B0=E3=81=AE?= =?UTF-8?q?=E6=AD=A3=E9=9D=A2=E3=83=86=E3=82=AF=E3=82=B9=E3=83=81=E3=83=A3?= =?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 --- .../ragium/textures/block/alloy_smeler_front.png | Bin 0 -> 328 bytes .../ragium/textures/block/assembler_front.png | Bin 0 -> 291 bytes .../ragium/textures/block/brewery_front.png | Bin 0 -> 374 bytes .../ragium/textures/block/chemical_bath_front.png | Bin 0 -> 324 bytes .../ragium/textures/block/compressor_front.png | Bin 0 -> 307 bytes .../ragium/textures/block/crusher_front.png | Bin 0 -> 314 bytes .../textures/block/cutting_machine_front.png | Bin 0 -> 330 bytes .../ragium/textures/block/machine/bio_front.png | Bin 0 -> 277 bytes .../textures/block/machine/chemical_front.png | Bin 0 -> 255 bytes .../textures/block/machine/electronics_front.png | Bin 0 -> 256 bytes .../assets/ragium/textures/block/mixer_front.png | Bin 0 -> 290 bytes .../ragium/textures/block/planter_front.png | Bin 0 -> 350 bytes .../textures/block/precision_assembler_front.png | Bin 0 -> 315 bytes .../ragium/textures/block/pyrolyzer_front.png | Bin 0 -> 308 bytes .../ragium/textures/block/refinery_front.png | Bin 0 -> 305 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/ragium/textures/block/alloy_smeler_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/assembler_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/brewery_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/chemical_bath_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/compressor_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/crusher_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/cutting_machine_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/machine/bio_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/machine/chemical_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/machine/electronics_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/mixer_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/planter_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/precision_assembler_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/pyrolyzer_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/refinery_front.png diff --git a/src/main/resources/assets/ragium/textures/block/alloy_smeler_front.png b/src/main/resources/assets/ragium/textures/block/alloy_smeler_front.png new file mode 100644 index 0000000000000000000000000000000000000000..0b65bccb18a657b854b47c89882c3d69c9c06b1c GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`e?46sLn;{OOtR){a*$~GpOcyF zoSy8Sn0}tKBmIG%*uCZ>=Vl!d&UolLeKBTg2$3(`-LRxLMp9GYfbxu3obDFH! zUXXIYVb-z&Gnt0ZE*mW3;x3bK7zqp&M=h6 zsa}!enb6`M?kCdECNqEb|9S`K3wodL!0N4jq0SXy5P(Uy< YaDCmQn_l1k0Vu-Y>FVdQ&MBb@0G|zrD*ylh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/assembler_front.png b/src/main/resources/assets/ragium/textures/block/assembler_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7dbb3d82b311c3413307b7bfaff5dfa2943406 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`H#}V&Ln;{OOfuv;bI>U-^AS!75xq292HEqZEM?Zu=*$-*>m8?S-lotF}cs_Y0o$7B(K?eH|mnf z+nz7ai~gUGnzd}=!3EzZJpQ(kBQ3#1Vdd+nqzCJa3>VB$>2!#k=KRI9JcfyRyX0c# z=0zGT5^7EBPl_IXpY3$!b4-HY<>uSj>d$_?Wzo=Slr#|EJ@d@Rlm#9v@skf{{{Qoy zk@dk(gXJ$Z52|M=o3XL&@`#+)>-{wAenrxOOGh5e>S25S-ErCiwPmZc9-3djux;%h npx6HYpC=@=49H*u`H`7n4aYOxPv%offFcZ@u6{1-oD!MmfL(!L~u>hTjiD{a)OsGR>j0SZ5>I;o0iXtD2qL3`he2&m3Zs{7oUp!9l zz@7Uy6#K%0MSspVS}pcvE81VN@0xF)?~8ssuL{s$@Y`TBV*;T$8qnQ`Pt*B`&?j!` z&g@F9_xI+0_6}MdolR(NNBVZKW%*1DXEw2oMf1w(k?8m9SbzdBD=`$arykbOfbNY( zoVTDkyf8cL*4Bo@;0^`@k!ARI)v_!Fr#>`IBYyw@0RR7V!oAo4000I_L_t&o0D02W UEy0qnj{pDw07*qoM6N<$g8tH}-2eap literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/chemical_bath_front.png b/src/main/resources/assets/ragium/textures/block/chemical_bath_front.png new file mode 100644 index 0000000000000000000000000000000000000000..20e72d70f551be9c8389165f184b8bfba3848ebe GIT binary patch literal 324 zcmV-K0lWT*P)0-){aH;-c3JW- z+|ERxu_Q@CeKfMShkYtqPwSZ^$8k)3KrC8+_2d&^!g!v?@6QsEOw7HhwO%5`5TQx{ z_R^cx8UQiOs1Tz^wV~4O-8LuFjNTTK9VUDS*9Q@>#!wvuGeSBNco-G!7o9o8-#{QU z^n$+`^9f|f6<_%WmbR91-#dyPgHlf2{G10@A{688NH%ijvAJ(K)4!R4Pcq$A zcb}1Wj)V9dhKG>{ce!}ZnkX!IX3rX3Ms$`{Ln;{OOfuwaG7xEtx7xL1 zgM_$wS-IZ<#U0(v-xVHmsmycef4GXpTu9Pq!upL{b5{uV%-{3<#s8@xA=6S12VF9e zozgS^)u$<{C9&#J239Hi_nm9viD2~gxV??(;hndOnVL#ty(g(eIlX7|l@;BvK!Zy! zswu}yNOZ>Bt%-je+fsD)u7C7pZ|7x!f^yfOX-i`Z_vO3Hjcab0TgTN@IgeXN*eHD3 z1jf)*?JE95JRF;~XBe1%f3RV1?R{o8fwq~9jtj~@@)?SiF(t3a`p4jPb%|5Luamf|MPud15f0%NDNlk=s$rX%raA%e=zhb@`!}+cp){Y-8itck+jP z%i_n41s-BO)>lFVZnv%bS-J9f!S;Rs{xP%6t>2Mbl`&`jsfaInf)ismXbIcS`1|Ti zYaqk!109VDp)Y6HEM_oG4VY@T=6=K9+T`GX0FBd^cAT{|@lDnTg}{F%sRjK&1{)|S am>Ht4zt`P2u~-i%!r%aR-5CZhr7D2tLL8h8o&~`ZC+BlM{)J#>?cd&PM?*}D|mOMXxrB{hgPsx z&Pfv3+vT;7j}Dn zNx+gX2Y)EOdauKq$G6^SamTICK4~9*2r#zJ=szU5!)|SH&dpVSL##H;U|#;e^?RX{ z)IU>;7KeHuV7&Lk9y9uYivK?w+%j&rCJ!*0G*Jsb4 z)_1P$Qj*y3ax{7G+M+XE_YO^Xl3dqit?`{fa#6;&0AWGvo2HjnRmbH$V$t&4zVlz} z^&DtXg z%kfp){tz*8dG$P+0R;pM?3cyKau^ucLfL-Fng#0x`zzdL8s&EW0z)D(3>~fZ8w8fOIn3NC(H9( wbZSCXRq6u(0RR8w{d^Mu000I_L_t&o0PB<1E!y;z5&!@I07*qoM6N<$g33RX4*&oF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/precision_assembler_front.png b/src/main/resources/assets/ragium/textures/block/precision_assembler_front.png new file mode 100644 index 0000000000000000000000000000000000000000..aec928c1c439dc6cd8c227a040962e70e6056e7b GIT binary patch literal 315 zcmV-B0mS}^P)peS8cw^eZ8LPdJw_!vpTT zO6dO*`kLc&^ZO4-&<(zL>Wm(OOH9+WTcXT-HZ$N7jA9gk01yj$A*1RjKrdvVY8I+} zz-jxoIVj8(MPY1n33XlD7XSeN{|3JRmjD0&21!IgR09Bj%e*biZW%QI0000My&8nDgx=fPj0R=fgJ=qm4linB&4m zYjhGdV)dbEe_ws>0RkgZ#IIx$G(i6b9fCuo&~K*b7tVm4W6(UNlXC{_JO!G;864J6 znF7sVs;UxBa}I6W${PRx|No(k2;=|&00v1!K~w_(oX*`XtBh$M00000NkvXXu0mjf DbFYA3 literal 0 HcmV?d00001 From 1c5bde9190579e49a84ee14727b22b4324696428 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Fri, 2 Oct 2026 00:18:06 +0900 Subject: [PATCH 35/38] =?UTF-8?q?feat:=20Freezer=20=E3=81=AE=E3=81=BF?= =?UTF-8?q?=E3=83=86=E3=82=AF=E3=82=B9=E3=83=81=E3=83=A3=E3=82=92=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/model/RagiumModelProvider.kt | 17 +-- .../assets/ragium/blockstates/freezer.json | 8 +- .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 +- .../entity/machine/HTFreezerBlockEntity.kt | 114 +++++++++++++++++- .../assets/ragium/models/block/freezer.json | 4 +- .../ragium/models/block/machine/cryo.json | 8 ++ .../ragium/textures/block/freezer_front.png | Bin 0 -> 330 bytes .../textures/block/machine/cryo_front.png | Bin 0 -> 213 bytes .../textures/block/machine/cryo_side.png | Bin 0 -> 332 bytes 9 files changed, 135 insertions(+), 19 deletions(-) rename src/{generated => main}/resources/assets/ragium/models/block/freezer.json (75%) create mode 100644 src/main/resources/assets/ragium/models/block/machine/cryo.json create mode 100644 src/main/resources/assets/ragium/textures/block/freezer_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/machine/cryo_front.png create mode 100644 src/main/resources/assets/ragium/textures/block/machine/cryo_side.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 977037ca2..241bdd5e5 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -92,19 +92,20 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP RagiumBlocks.MACHINES .entries .forEach { (machineType: HTMachineType, blockItems: List) -> - val inactiveModel: Identifier = inactiveModels[machineType]!! for (blockItem: HTSimpleDeferredBlockAndItem in blockItems) { + val (inactive: Identifier, active: Identifier) = when (blockItem) { + RagiumBlocks.FREEZER -> { + RagiumAPI.id(HTConstants.BLOCK, "machine", "cryo") to blockItem.idOrThrow.blockId + } + + else -> inactiveModels[machineType]!! to machineModel(generators, machineType, blockItem) + } generators.blockStateOutput.accept( MultiVariantGenerator.dispatch(blockItem.getOrThrow()) .with( PropertyDispatch.initial(HTMachineBlock.IS_ACTIVE) - .select(false, BlockModelGenerators.plainVariant(inactiveModel)) - .select( - true, - BlockModelGenerators.plainVariant( - machineModel(generators, machineType, blockItem) - ) - ) + .select(false, BlockModelGenerators.plainVariant(inactive)) + .select(true, BlockModelGenerators.plainVariant(active)) ).with(BlockModelGenerators.ROTATION_HORIZONTAL_FACING) ) } diff --git a/src/generated/resources/assets/ragium/blockstates/freezer.json b/src/generated/resources/assets/ragium/blockstates/freezer.json index d4c8248a2..74fbaa4dd 100644 --- a/src/generated/resources/assets/ragium/blockstates/freezer.json +++ b/src/generated/resources/assets/ragium/blockstates/freezer.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,is_active=false": { - "model": "ragium:block/machine/heat", + "model": "ragium:block/machine/cryo", "y": 90 }, "facing=east,is_active=true": { @@ -9,13 +9,13 @@ "y": 90 }, "facing=north,is_active=false": { - "model": "ragium:block/machine/heat" + "model": "ragium:block/machine/cryo" }, "facing=north,is_active=true": { "model": "ragium:block/freezer" }, "facing=south,is_active=false": { - "model": "ragium:block/machine/heat", + "model": "ragium:block/machine/cryo", "y": 180 }, "facing=south,is_active=true": { @@ -23,7 +23,7 @@ "y": 180 }, "facing=west,is_active=false": { - "model": "ragium:block/machine/heat", + "model": "ragium:block/machine/cryo", "y": 270 }, "facing=west,is_active=true": { diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 92c929966..5865573ec 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -3,6 +3,7 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToItemAndFluidRecipe +import hiiragi283.lib.recipe.base.HTFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -57,7 +58,7 @@ data object RagiumRecipeLookups { val ALLOYING: HTCompoundRecipeLookup = create(RagiumConstants.ALLOYING) @JvmField - val FREEZING: HTCompoundRecipeLookup = create(RagiumConstants.FREEZING) + val FREEZING: HTCompoundRecipeLookup = create(RagiumConstants.FREEZING) @JvmField val MELTING: HTCompoundRecipeLookup = create(RagiumConstants.MELTING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt index 36f9fd238..302807466 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt @@ -1,18 +1,124 @@ package hiiragi283.ragium.common.block.entity.machine -import hiiragi283.lib.sounds.HTSoundInstance +import hiiragi283.lib.HTConstants +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.gui.HTSlotHelper +import hiiragi283.lib.gui.widget.HTWidgetHolder +import hiiragi283.lib.recipe.base.HTFluidToItemRecipe +import hiiragi283.lib.recipe.handler.HTFluidInputTank +import hiiragi283.lib.recipe.handler.HTOutputSlot +import hiiragi283.lib.recipe.handler.HTOutputSlotHelper +import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.lookup.HTRecipeCache +import hiiragi283.lib.transfer.item.HTBasicItemSlot +import hiiragi283.lib.transfer.useTransaction import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.config.HTEnergyConfig import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes -import hiiragi283.ragium.common.block.entity.machine.base.HTItemAndFluidToItemBlockEntity +import hiiragi283.ragium.common.gui.widget.HTFluidWidget +import hiiragi283.ragium.common.gui.widget.HTItemWidget +import hiiragi283.ragium.common.transfer.fluid.HTVariableFluidTank +import hiiragi283.ragium.common.transfer.holder.HTBasicFluidTankHolder +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.ItemStack import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.storage.ValueInput +import net.minecraft.world.level.storage.ValueOutput +import net.neoforged.neoforge.fluids.FluidInstance +import net.neoforged.neoforge.transfer.transaction.Transaction class HTFreezerBlockEntity(pos: BlockPos, state: BlockState) : - HTItemAndFluidToItemBlockEntity(RagiumBlockEntityTypes.FREEZER.get(), RagiumRecipeLookups.FREEZING, pos, state) { - override fun getCompletedSound(): HTSoundInstance = HTSoundInstance(SoundEvents.BUCKET_FILL_POWDER_SNOW) + HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.FREEZER.get(), pos, state) { + private val cache: HTRecipeCache = + HTRecipeCache(RagiumRecipeLookups.FREEZING) + + 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 inputTank: HTFluidInputTank by lazy { HTFluidInputTank(this@HTFreezerBlockEntity.inputTank) } + private val outputSlot: HTOutputSlot by lazy { + HTOutputSlotHelper.forItem(this@HTFreezerBlockEntity.outputSlot) + } + + override fun createInput(): HTSingleFluidRecipeInput = HTSingleFluidRecipeInput(inputTank.getStoredInput()) + + override fun findRecipe(level: ServerLevel, input: HTSingleFluidRecipeInput): HTFluidToItemRecipe? = + cache.findFirstRecipe(input, level) + + override fun canComplete( + recipe: HTFluidToItemRecipe, + input: HTSingleFluidRecipeInput, + output: ItemStack + ): Boolean = useTransaction { transaction: Transaction -> + val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) + when { + inputTank.use(inputConsume, transaction).failed -> false + else -> outputSlot.take(output, transaction) == HTOutputSlot.TakeResult.FULL + } + } + + override fun onComplete(recipe: HTFluidToItemRecipe, input: HTSingleFluidRecipeInput, output: ItemStack) { + useTransaction { transaction: Transaction -> + inputTank.use(recipe.getMatchingStack(input.fluid), transaction) + outputSlot.take(output, transaction) + transaction.commit() + } + playSound(SoundEvents.BUCKET_FILL_POWDER_SNOW) + } + } + } + + private lateinit var inputTank: HTVariableFluidTank + + override fun createFluidTanks(builder: HTBasicFluidTankHolder.Builder, listener: Runnable) { + inputTank = builder.addSlot(HTSlotInfo.INPUT, HTVariableFluidTank.input(getTankCapacity(), listener)) + } + + private lateinit var outputSlot: HTBasicItemSlot + + override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { + 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.5)) + // progress + addProgressBar(widgetHolder) + // input + widgetHolder += HTFluidWidget.Tank( + inputTank, + HTSlotHelper.getSlotPosX(1), + HTSlotHelper.getSlotPosY(0), + HTBackgroundType.INPUT, + false + ) + widgetHolder.track(inputTank) + // output + widgetHolder += HTItemWidget.Container( + outputSlot, + 0, + HTSlotHelper.getSlotPosX(6), + HTSlotHelper.getSlotPosY(1), + HTBackgroundType.OUTPUT + ) + widgetHolder.track(outputSlot) + } override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.freezer } diff --git a/src/generated/resources/assets/ragium/models/block/freezer.json b/src/main/resources/assets/ragium/models/block/freezer.json similarity index 75% rename from src/generated/resources/assets/ragium/models/block/freezer.json rename to src/main/resources/assets/ragium/models/block/freezer.json index 960f9dbdc..29113042c 100644 --- a/src/generated/resources/assets/ragium/models/block/freezer.json +++ b/src/main/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/heat_side", + "side": "ragium:block/machine/cryo_side", "top": "ragium:block/machine_casing" } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/ragium/models/block/machine/cryo.json b/src/main/resources/assets/ragium/models/block/machine/cryo.json new file mode 100644 index 000000000..75478a08d --- /dev/null +++ b/src/main/resources/assets/ragium/models/block/machine/cryo.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "ragium:block/machine/cryo_front", + "side": "ragium:block/machine/cryo_side", + "top": "ragium:block/machine_casing" + } +} diff --git a/src/main/resources/assets/ragium/textures/block/freezer_front.png b/src/main/resources/assets/ragium/textures/block/freezer_front.png new file mode 100644 index 0000000000000000000000000000000000000000..49a4f7325d6064a7a65896a32331b284e39d72fa GIT binary patch literal 330 zcmV-Q0k!^#P)Ae9~fFG1{V@D9YY7<*ew3NK(nXJ=(RgEneIu%n>UeG5xqfx;zu>@YL` z@9yA*Vfb|=2!gLC>bdOC;zCgrq79UXOjonNKm&~dA2xZO3)uPg_n-kH@O@u^7}`P; zcMNC(L|~eTfm)IzCau?w0hu&SSq2%Zc}&0E9mlc0H@lfUF*{Q;Io9{-q5i_{DFS3_ zI4&SUOl*s_M(MopxT$6RC5j?F#D1m9%(qK*f+}`?_lC%k$K1G*UF#TdSHJ|!)DZ%6 zfVN4;z!We6W-ul+y^X>m4kM`b|RcTw+ z-a19dkNM+)8dPkwaT*gFVdQ I&MBb@0OM0qy8r+H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/block/machine/cryo_side.png b/src/main/resources/assets/ragium/textures/block/machine/cryo_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ef4618e5e0b4fd9c27410902d081a3bad2addf3d GIT binary patch literal 332 zcmV-S0ki&zP)Q089abqLJwf#=H}?;K*GXeT$mZyu)k8I)L@bD zXraHaEonuXrp>=dDH{QGWm$%zC?-*sC90}|76d_nIF7vu!w^vvsiE-}=$d+5_ZRrU zkyTvZdIq}IKICeSG1^#HID-6m2k8<&DvkiR2Z*mkaLvzCq1VpA0yo8b^(^EpLJ707^H+SVDc>8f55~5BcW)}WbcDvWB;8J(*MS~ zGlP6{#u)6>rxS2*b4@ Date: Sat, 3 Oct 2026 01:36:41 +0900 Subject: [PATCH 36/38] =?UTF-8?q?refactor!:=20HTValueWithId=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 | 8 +-- .../data/lang/RagiumEnglishLangProvider.kt | 52 ++++++++-------- .../data/lang/RagiumJapaneseLangProvider.kt | 52 ++++++++-------- .../ragium/data/model/RagiumModelProvider.kt | 4 +- .../data/recipe/RagiumBioRecipeProvider.kt | 19 ------ .../recipe/RagiumChemicalRecipeProvider.kt | 27 ++++++++ .../data/ragium/recipe/washing/flint.json | 16 +++++ .../lib/data/ExporterDataProvider.kt | 4 +- .../lib/data/lang/HTLangProvider.kt | 11 ++++ .../lib/data/loot/HTBlockLootTableProvider.kt | 17 ++--- .../lib/data/model/HTModelProvider.kt | 21 ++++--- .../lib/data/model/ModelTemplates.kt | 6 +- .../hiiragi283/lib/gui/widget/HTWidgetType.kt | 18 +++--- .../hiiragi283/lib/recipe/HTRecipeHolder.kt | 6 +- .../hiiragi283/lib/recipe/HTRecipeType.kt | 24 ------- .../lib/registry/HTDeferredBlock.kt | 7 +-- .../lib/registry/HTDeferredFluidType.kt | 7 +-- .../lib/registry/HTDeferredHolder.kt | 18 ++++++ .../hiiragi283/lib/registry/HTDeferredItem.kt | 6 +- .../lib/registry/HTDeferredMobEffect.kt | 7 +-- .../lib/registry/HTDeferredRegister.kt | 26 ++++++++ .../hiiragi283/lib/resource/HTValueAndKey.kt | 20 ------ .../hiiragi283/lib/resource/HTValueWithId.kt | 39 ------------ .../hiiragi283/lib/resource/HTValueWithKey.kt | 26 +++++++- .../ragium/api/recipe/RTAlloyingRecipe.kt | 4 +- .../ragium/api/recipe/RTAssemblingRecipe.kt | 4 +- .../ragium/api/recipe/RTBathingRecipe.kt | 4 +- .../ragium/api/recipe/RTBrewingRecipe.kt | 4 +- .../ragium/api/recipe/RTCentrifugingRecipe.kt | 4 +- .../ragium/api/recipe/RTCompressingRecipe.kt | 4 +- .../ragium/api/recipe/RTCrushingRecipe.kt | 4 +- .../ragium/api/recipe/RTCuttingRecipe.kt | 4 +- .../ragium/api/recipe/RTDrainingRecipe.kt | 4 +- .../api/recipe/RTElectrolyzingRecipe.kt | 4 +- .../ragium/api/recipe/RTEnchantingRecipe.kt | 4 +- .../ragium/api/recipe/RTFillingRecipe.kt | 4 +- .../ragium/api/recipe/RTFreezingRecipe.kt | 4 +- .../ragium/api/recipe/RTMeltingRecipe.kt | 4 +- .../ragium/api/recipe/RTMixingRecipe.kt | 4 +- .../ragium/api/recipe/RTPlantingRecipe.kt | 4 +- .../ragium/api/recipe/RTPyrolyzingRecipe.kt | 4 +- .../ragium/api/recipe/RTReactingRecipe.kt | 4 +- .../ragium/api/recipe/RTRefiningRecipe.kt | 4 +- .../api/recipe/RTResourceExtractingRecipe.kt | 4 +- .../ragium/api/recipe/RTWashingRecipe.kt | 4 +- .../ragium/api/recipe/RagiumRecipeLookups.kt | 4 +- .../ragium/api/recipe/RagiumRecipeTypes.kt | 62 ++++++++++--------- .../lib/integration/jei/HTJeiRecipeType.kt | 23 +++---- .../kotlin/hiiragi283/ragium/common/Ragium.kt | 13 +--- .../common/gui/widget/HTEnergySlotWidget.kt | 2 +- .../ragium/common/gui/widget/HTFluidWidget.kt | 2 +- .../ragium/common/gui/widget/HTItemWidget.kt | 2 +- .../common/gui/widget/HTProgressWidget.kt | 2 +- .../common/gui/widget/RagiumWidgetTypes.kt | 26 ++++---- 54 files changed, 323 insertions(+), 338 deletions(-) create mode 100644 src/generated/resources/data/ragium/recipe/washing/flint.json delete mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeType.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/resource/HTValueAndKey.kt delete mode 100644 src/lib/kotlin/hiiragi283/lib/resource/HTValueWithId.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 35e134d2a..05e92066a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -73,10 +73,10 @@ data object RagiumClient : HTClientMod() { } override fun registerWidgetRenderer(event: HTRegisterWidgetRendererEvent) { - event.register(RagiumWidgetTypes.ENERGY, ::HTEnergySlotWidgetRenderer) - event.register(RagiumWidgetTypes.FLUID, ::HTFluidWidgetRenderer) - event.register(RagiumWidgetTypes.ITEM, ::HTItemWidgetRenderer) - event.register(RagiumWidgetTypes.PROGRESS, ::HTProgressWidgetRenderer) + event.register(RagiumWidgetTypes.ENERGY.get(), ::HTEnergySlotWidgetRenderer) + event.register(RagiumWidgetTypes.FLUID.get(), ::HTFluidWidgetRenderer) + event.register(RagiumWidgetTypes.ITEM.get(), ::HTItemWidgetRenderer) + event.register(RagiumWidgetTypes.PROGRESS.get(), ::HTProgressWidgetRenderer) } override fun registerFluidModels(register: HTFluidModelRegister) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index b3c2e0973..ba3899442 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -164,32 +164,32 @@ class RagiumEnglishLangProvider(output: PackOutput) : addCustomPotion("enchanted_golden_apple", "Enchanted Golden Apple") // Recipe Type - add(RagiumRecipeTypes.ASSEMBLING, "Assembling") - add(RagiumRecipeTypes.COMPRESSING, "Compressing") - add(RagiumRecipeTypes.CRUSHING, "Crushing") - add(RagiumRecipeTypes.CUTTING, "Cutting") - add(RagiumRecipeTypes.DRAINING, "Draining") - add(RagiumRecipeTypes.FILLING, "Filling") - - add(RagiumRecipeTypes.ALLOYING, "Alloying") - add(RagiumRecipeTypes.FREEZING, "Freezing") - add(RagiumRecipeTypes.MELTING, "Melting") - add(RagiumRecipeTypes.PYROLYZING, "Pyrolyzing") - add(RagiumRecipeTypes.REFINING, "Refining") - - add(RagiumRecipeTypes.BATHING, "Chemical Bathing") - add(RagiumRecipeTypes.CENTRIFUGING, "Centrifuging") - add(RagiumRecipeTypes.MIXING, "Mixing") - add(RagiumRecipeTypes.REACTING, "Chemical Reacting") - add(RagiumRecipeTypes.WASHING, "Washing") - - add(RagiumRecipeTypes.BREWING, "Brewing") - add(RagiumRecipeTypes.PLANTING, "Planting") - - add(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") - add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "Resource Extracting") - - add(RagiumRecipeTypes.ENCHANTING, "Enchanting") + addRecipeType(RagiumRecipeTypes.ASSEMBLING, "Assembling") + addRecipeType(RagiumRecipeTypes.COMPRESSING, "Compressing") + addRecipeType(RagiumRecipeTypes.CRUSHING, "Crushing") + addRecipeType(RagiumRecipeTypes.CUTTING, "Cutting") + addRecipeType(RagiumRecipeTypes.DRAINING, "Draining") + addRecipeType(RagiumRecipeTypes.FILLING, "Filling") + + addRecipeType(RagiumRecipeTypes.ALLOYING, "Alloying") + addRecipeType(RagiumRecipeTypes.FREEZING, "Freezing") + addRecipeType(RagiumRecipeTypes.MELTING, "Melting") + addRecipeType(RagiumRecipeTypes.PYROLYZING, "Pyrolyzing") + addRecipeType(RagiumRecipeTypes.REFINING, "Refining") + + addRecipeType(RagiumRecipeTypes.BATHING, "Chemical Bathing") + addRecipeType(RagiumRecipeTypes.CENTRIFUGING, "Centrifuging") + addRecipeType(RagiumRecipeTypes.MIXING, "Mixing") + addRecipeType(RagiumRecipeTypes.REACTING, "Chemical Reacting") + addRecipeType(RagiumRecipeTypes.WASHING, "Washing") + + addRecipeType(RagiumRecipeTypes.BREWING, "Brewing") + addRecipeType(RagiumRecipeTypes.PLANTING, "Planting") + + addRecipeType(RagiumRecipeTypes.ELECTROLYZING, "Electrolyzing") + addRecipeType(RagiumRecipeTypes.RESOURCE_EXTRACTING, "Resource Extracting") + + addRecipeType(RagiumRecipeTypes.ENCHANTING, "Enchanting") // Text - Lib add(HTCommonTranslation.ERROR, "Error") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 505479e14..b56336206 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -160,32 +160,32 @@ class RagiumJapaneseLangProvider(output: PackOutput) : addCustomPotion("enchanted_golden_apple", "エンチャントされた金リンゴ") // Recipe Type - add(RagiumRecipeTypes.ASSEMBLING, "組立") - add(RagiumRecipeTypes.COMPRESSING, "圧縮") - add(RagiumRecipeTypes.CRUSHING, "粉砕") - add(RagiumRecipeTypes.CUTTING, "切断") - add(RagiumRecipeTypes.DRAINING, "排出") - add(RagiumRecipeTypes.FILLING, "封入") - - add(RagiumRecipeTypes.ALLOYING, "合金") - add(RagiumRecipeTypes.FREEZING, "冷凍") - add(RagiumRecipeTypes.MELTING, "溶融") - add(RagiumRecipeTypes.PYROLYZING, "熱分解") - add(RagiumRecipeTypes.REFINING, "蒸留") - - add(RagiumRecipeTypes.BATHING, "化学洗浄") - add(RagiumRecipeTypes.CENTRIFUGING, "遠心分離") - add(RagiumRecipeTypes.MIXING, "混合") - add(RagiumRecipeTypes.REACTING, "化学反応") - add(RagiumRecipeTypes.WASHING, "洗浄") - - add(RagiumRecipeTypes.BREWING, "醸造") - add(RagiumRecipeTypes.PLANTING, "栽培") - - add(RagiumRecipeTypes.ELECTROLYZING, "電気分解") - add(RagiumRecipeTypes.RESOURCE_EXTRACTING, "資源採集") - - add(RagiumRecipeTypes.ENCHANTING, "エンチャント") + addRecipeType(RagiumRecipeTypes.ASSEMBLING, "組立") + addRecipeType(RagiumRecipeTypes.COMPRESSING, "圧縮") + addRecipeType(RagiumRecipeTypes.CRUSHING, "粉砕") + addRecipeType(RagiumRecipeTypes.CUTTING, "切断") + addRecipeType(RagiumRecipeTypes.DRAINING, "排出") + addRecipeType(RagiumRecipeTypes.FILLING, "封入") + + addRecipeType(RagiumRecipeTypes.ALLOYING, "合金") + addRecipeType(RagiumRecipeTypes.FREEZING, "冷凍") + addRecipeType(RagiumRecipeTypes.MELTING, "溶融") + addRecipeType(RagiumRecipeTypes.PYROLYZING, "熱分解") + addRecipeType(RagiumRecipeTypes.REFINING, "蒸留") + + addRecipeType(RagiumRecipeTypes.BATHING, "化学洗浄") + addRecipeType(RagiumRecipeTypes.CENTRIFUGING, "遠心分離") + addRecipeType(RagiumRecipeTypes.MIXING, "混合") + addRecipeType(RagiumRecipeTypes.REACTING, "化学反応") + addRecipeType(RagiumRecipeTypes.WASHING, "洗浄") + + addRecipeType(RagiumRecipeTypes.BREWING, "醸造") + addRecipeType(RagiumRecipeTypes.PLANTING, "栽培") + + addRecipeType(RagiumRecipeTypes.ELECTROLYZING, "電気分解") + addRecipeType(RagiumRecipeTypes.RESOURCE_EXTRACTING, "資源採集") + + addRecipeType(RagiumRecipeTypes.ENCHANTING, "エンチャント") // Text - Lib add(HTCommonTranslation.ERROR, "エラー") diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 241bdd5e5..718eb0bc7 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -6,7 +6,7 @@ import hiiragi283.lib.data.model.HTModelTemplates import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.lib.registry.HTSimpleDeferredItem -import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.HTSimpleValueWithKey import hiiragi283.lib.resource.blockId import hiiragi283.lib.resource.vanillaId import hiiragi283.ragium.api.RagiumAPI @@ -130,7 +130,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP private fun machineModel( generators: BlockModelGenerators, machineType: HTMachineType, - block: HTValueWithId + block: HTSimpleValueWithKey ): Identifier { val blockId: Identifier = block.idOrThrow.blockId return ModelTemplates.CUBE_ORIENTABLE.create( diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt index c1fcee3a4..86bc4e6c5 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumBioRecipeProvider.kt @@ -28,25 +28,6 @@ class RagiumBioRecipeProvider(packOutput: PackOutput, future: CompletableFuture< } private fun brewing() { - // Poison + Spider Eye -> Fermented Spider Eye - RagiumRecipeBuilders.bathing { - itemIngredient { items { +Items.SPIDER_EYE } } - fluidIngredient { - +HTPotionFluidIngredient(Potions.POISON) - amount = 250 - } - result { +Items.FERMENTED_SPIDER_EYE } - }.save(exporter) - // Poison + Potato -> Poisonous Potato - RagiumRecipeBuilders.bathing { - itemIngredient { +holderSet(Tags.Items.CROPS_POTATO) } - fluidIngredient { - +HTPotionFluidIngredient(Potions.POISON) - amount = 250 - } - result { +Items.POISONOUS_POTATO } - }.save(exporter) - // Haste // Nausea RagiumRecipeBuilders.brewing { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 093cf3713..dbae10fcd 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.data.recipe import hiiragi283.lib.data.recipe.HTRecipeProvider +import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders @@ -12,6 +13,7 @@ import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput import net.minecraft.world.item.Items +import net.minecraft.world.item.alchemy.Potions import net.neoforged.neoforge.common.Tags import java.util.concurrent.CompletableFuture @@ -48,9 +50,34 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } result { +RagiumItems.MORTAR } }.save(exporter) + + // Poison + Spider Eye -> Fermented Spider Eye + RagiumRecipeBuilders.bathing { + itemIngredient { items { +Items.SPIDER_EYE } } + fluidIngredient { + +HTPotionFluidIngredient(Potions.POISON) + amount = 250 + } + result { +Items.FERMENTED_SPIDER_EYE } + }.save(exporter) + // Poison + Potato -> Poisonous Potato + RagiumRecipeBuilders.bathing { + itemIngredient { +holderSet(Tags.Items.CROPS_POTATO) } + fluidIngredient { + +HTPotionFluidIngredient(Potions.POISON) + amount = 250 + } + result { +Items.POISONOUS_POTATO } + }.save(exporter) } private fun washing() { + // Gravel + Water -> Flint + RagiumRecipeBuilders.washing { + itemIngredient { +holderSet(Tags.Items.GRAVELS) } + fluidIngredient { +waterSet() } + result { +Items.FLINT } + }.save(exporter) // Sand + Water -> SiO2 + Borax RagiumRecipeBuilders.washing { itemIngredient { diff --git a/src/generated/resources/data/ragium/recipe/washing/flint.json b/src/generated/resources/data/ragium/recipe/washing/flint.json new file mode 100644 index 000000000..e4f391977 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/washing/flint.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:washing", + "fluid_ingredient": { + "amount": 1000, + "fluids": "#c:water" + }, + "item_ingredient": { + "count": 1, + "items": "#c:gravels" + }, + "result": { + "count": 1, + "id": "minecraft:flint" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt index 7b043e90b..90d79b38c 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/ExporterDataProvider.kt @@ -6,7 +6,7 @@ import com.mojang.serialization.JsonOps import hiiragi283.lib.HTComparators import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.RegistryKey -import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.HTSimpleValueWithKey import hiiragi283.lib.resource.debugPath import hiiragi283.lib.resource.toId import hiiragi283.lib.tag.HTMaterialLike @@ -108,7 +108,7 @@ abstract class ExporterDataProvider( protected fun getHasName(id: Identifier): String = "has_${id.debugPath}" - protected fun getHasName(value: HTValueWithId<*>): String = getHasName(value.idOrThrow) + protected fun getHasName(value: HTSimpleValueWithKey<*>): String = getHasName(value.idOrThrow) protected fun getHasName(tagKey: TagKey<*>): String = getHasName(tagKey.location()) diff --git a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt index d81e04b45..afce749ac 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/lang/HTLangProvider.kt @@ -8,8 +8,10 @@ import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTPotionContent import hiiragi283.lib.resource.toLanguageKey import hiiragi283.lib.text.HTHasTranslationKey +import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.data.PackOutput import net.minecraft.resources.ResourceKey +import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.enchantment.Enchantment import net.neoforged.neoforge.common.data.LanguageProvider @@ -127,4 +129,13 @@ abstract class HTLangProvider(output: PackOutput, modId: String, val langType: H // Wall content.wall?.let { add(it, WALL_PATTERN, name) } } + + /** + * @since 26.1.8 + */ + fun addRecipeType(recipeType: RecipeType<*>, value: String) { + BuiltInRegistries.RECIPE_TYPE.getResourceKey(recipeType).ifPresent { + add(it.toLanguageKey(), value) + } + } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/HTBlockLootTableProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/HTBlockLootTableProvider.kt index 05c1f4746..f8dc0c872 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/loot/HTBlockLootTableProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/loot/HTBlockLootTableProvider.kt @@ -1,6 +1,7 @@ package hiiragi283.lib.data.loot -import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.HTSimpleValueWithKey +import hiiragi283.lib.resource.HTValueWithKey import net.minecraft.core.Holder import net.minecraft.core.HolderLookup import net.minecraft.data.loot.BlockLootSubProvider @@ -19,11 +20,11 @@ import net.minecraft.world.level.storage.loot.LootTable abstract class HTBlockLootTableProvider( registries: HolderLookup.Provider, protected val modId: String, - private val rawBlocks: Sequence> + private val rawBlocks: Sequence> ) : BlockLootSubProvider(emptySet(), FeatureFlags.REGISTRY.allFlags(), registries) { final override fun getKnownBlocks(): Iterable = rawBlocks - .filter { block: HTValueWithId -> block.idOrNull?.namespace == modId } - .mapNotNull(HTValueWithId::getOrNull) + .filter { block: HTSimpleValueWithKey -> block.idOrNull?.namespace == modId } + .mapNotNull(HTSimpleValueWithKey::getOrNull) .filter { block: Block -> block.lootTable.isPresent } .toList() @@ -34,16 +35,16 @@ abstract class HTBlockLootTableProvider( */ val fortune: Holder by lazy { registries.holderOrThrow(Enchantments.FORTUNE) } - protected fun dropSelf(like: HTValueWithId) { + protected fun dropSelf(like: HTSimpleValueWithKey) { dropSelf(like.getOrThrow()) } - protected fun add(like: HTValueWithId, table: LootTable.Builder) { + protected fun add(like: HTSimpleValueWithKey, table: LootTable.Builder) { add(like.getOrThrow(), table) } - protected inline fun add(like: HTValueWithId, factory: (BLOCK) -> LootTable.Builder) { - val block: BLOCK = like.getOrThrow() + protected inline fun add(like: HTValueWithKey, factory: (T) -> LootTable.Builder) { + val block: T = like.getOrThrow() add(block, factory(block)) } } diff --git a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt index 23e1ce095..58856d786 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/model/HTModelProvider.kt @@ -3,7 +3,8 @@ package hiiragi283.lib.data.model import hiiragi283.lib.HTConstants import hiiragi283.lib.registry.HTDecorationContent import hiiragi283.lib.registry.HTFluidContent -import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.HTSimpleValueWithKey +import hiiragi283.lib.resource.HTValueWithKey import hiiragi283.lib.resource.blockId import hiiragi283.lib.resource.itemId import hiiragi283.lib.resource.toId @@ -42,7 +43,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @since 26.1.8 */ fun BlockModelGenerators.plainVariant( - block: HTValueWithId<*>, + block: HTSimpleValueWithKey<*>, template: ModelTemplate, mapping: TextureMapping ): MultiVariant = BlockModelGenerators.plainVariant(template.createBlock(block, mapping, this.modelOutput)) @@ -55,7 +56,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @since 26.1.8 */ fun BlockModelGenerators.createSimple( - block: HTValueWithId, + block: HTSimpleValueWithKey, template: ModelTemplate, mapping: TextureMapping ) { @@ -96,7 +97,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * ハーフブロックのブロックJSONを生成します。 */ fun BlockModelGenerators.createSlab( - block: HTValueWithId, + block: HTValueWithKey, fullModel: Identifier, top: Material, side: Material, @@ -124,7 +125,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * 階段ブロックのブロックJSONを生成します。 */ fun BlockModelGenerators.createStairs( - block: HTValueWithId, + block: HTValueWithKey, top: Material, side: Material, bottom: Material @@ -151,7 +152,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * 壁ブロックのブロックJSONを生成します。 * @since 26.1.8 */ - fun BlockModelGenerators.createWall(block: HTValueWithId, wall: Material) { + fun BlockModelGenerators.createWall(block: HTValueWithKey, wall: Material) { val mapping: TextureMapping = TextureMapping().put(TextureSlot.WALL, wall) this.blockStateOutput.accept( BlockModelGenerators.createWall( @@ -171,7 +172,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * 液体ブロックのブロックJSONを生成します。 * @param fluidBlock 液体ブロックの提供元 */ - fun BlockModelGenerators.createFluid(fluidBlock: HTValueWithId) { + fun BlockModelGenerators.createFluid(fluidBlock: HTSimpleValueWithKey) { this.createSimple( fluidBlock, HTModelTemplates.FLUID_BLOCK, @@ -188,7 +189,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @param template 使用するモデルのテンプレート */ fun ItemModelGenerators.generateFlatItem( - item: HTValueWithId, + item: HTSimpleValueWithKey, layer: Identifier = item.idOrThrow.itemId, template: ModelTemplate = ModelTemplates.FLAT_ITEM ) { @@ -204,7 +205,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @param layers モデルのテクスチャのパス * @throws IllegalStateException [layers]のサイズが`0`または`4`以上の場合 */ - fun ItemModelGenerators.generateLayeredItem(item: HTValueWithId, vararg layers: Identifier) { + fun ItemModelGenerators.generateLayeredItem(item: HTSimpleValueWithKey, vararg layers: Identifier) { val (mapping: TextureMapping, template: ModelTemplate) = when (layers.size) { 1 -> TextureMapping.layer0(Material(layers[0])) to ModelTemplates.FLAT_ITEM @@ -229,7 +230,7 @@ abstract class HTModelProvider(output: PackOutput, modId: String) : ModelProvide * @return モデルのパス */ fun ItemModelGenerators.createFlatItemModel( - item: HTValueWithId<*>, + item: HTSimpleValueWithKey<*>, layer: Identifier = item.idOrThrow.itemId, template: ModelTemplate = ModelTemplates.FLAT_ITEM ): Identifier = template.createItem(item, TextureMapping.layer0(Material(layer)), this.modelOutput) diff --git a/src/lib/kotlin/hiiragi283/lib/data/model/ModelTemplates.kt b/src/lib/kotlin/hiiragi283/lib/data/model/ModelTemplates.kt index d003dea4c..e12cc7d58 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/model/ModelTemplates.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/model/ModelTemplates.kt @@ -1,6 +1,6 @@ package hiiragi283.lib.data.model -import hiiragi283.lib.resource.HTValueWithId +import hiiragi283.lib.resource.HTSimpleValueWithKey import hiiragi283.lib.resource.blockId import hiiragi283.lib.resource.itemId import net.minecraft.client.data.models.model.ModelInstance @@ -16,7 +16,7 @@ import kotlin.jvm.optionals.getOrElse * @since 26.1.0 */ fun ModelTemplate.createBlock( - block: HTValueWithId<*>, + block: HTSimpleValueWithKey<*>, textures: TextureMapping, output: BiConsumer ): Identifier = this.create(block.idOrThrow.blockId.withSuffix(this.suffix.getOrElse { "" }), textures, output) @@ -27,7 +27,7 @@ fun ModelTemplate.createBlock( * @since 26.1.0 */ fun ModelTemplate.createItem( - item: HTValueWithId<*>, + item: HTSimpleValueWithKey<*>, textures: TextureMapping, output: BiConsumer ): Identifier = this.create(item.idOrThrow.itemId.withSuffix(this.suffix.getOrElse { "" }), textures, output) diff --git a/src/lib/kotlin/hiiragi283/lib/gui/widget/HTWidgetType.kt b/src/lib/kotlin/hiiragi283/lib/gui/widget/HTWidgetType.kt index 110f4b4e6..f57b346b2 100644 --- a/src/lib/kotlin/hiiragi283/lib/gui/widget/HTWidgetType.kt +++ b/src/lib/kotlin/hiiragi283/lib/gui/widget/HTWidgetType.kt @@ -1,11 +1,6 @@ package hiiragi283.lib.gui.widget -import hiiragi283.lib.registry.createKey -import hiiragi283.lib.resource.HTValueWithKey -import hiiragi283.lib.util.Ior -import hiiragi283.ragium.api.RagiumRegistries import net.minecraft.resources.Identifier -import net.minecraft.resources.ResourceKey /** * [HTWidget]を識別するためのインターフェースです。 @@ -13,10 +8,11 @@ import net.minecraft.resources.ResourceKey * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTWidgetType(private val id: Identifier) : - HTValueWithKey, HTWidgetType> { - override fun unwrapWithKey(): Ior>, HTWidgetType> = - Ior.Both(RagiumRegistries.Keys.WIDGET_TYPE.createKey(id), this) - - override fun toString(): String = "HTWidgetType(id=$id)" +interface HTWidgetType { + companion object { + @JvmStatic + fun simple(id: Identifier): HTWidgetType = object : HTWidgetType { + override fun toString(): String = id.toString() + } + } } diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt index c307fe95e..cc9047f80 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeHolder.kt @@ -3,9 +3,7 @@ package hiiragi283.lib.recipe import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.resource.HTValueWithId import hiiragi283.lib.serialization.codec.HTCodecs -import hiiragi283.lib.util.Ior import net.minecraft.resources.Identifier import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeHolder @@ -17,7 +15,7 @@ import net.minecraft.world.item.crafting.RecipeHolder * @since 26.1.0 */ @JvmRecord -data class HTRecipeHolder(val key: RecipeKey, val recipe: RECIPE) : HTValueWithId { +data class HTRecipeHolder(val key: RecipeKey, val recipe: RECIPE) { companion object { @JvmStatic fun codec(recipeCodec: MapCodec): Codec> = @@ -45,8 +43,6 @@ data class HTRecipeHolder(val key: RecipeKey, val recipe: RECI } inline fun castAs(): HTRecipeHolder? = mapNotNull { it as? U } - - override fun unwrapWithId(): Ior = Ior.Both(this.id, this.recipe) } // Extensions // diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeType.kt b/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeType.kt deleted file mode 100644 index f9167341a..000000000 --- a/src/lib/kotlin/hiiragi283/lib/recipe/HTRecipeType.kt +++ /dev/null @@ -1,24 +0,0 @@ -package hiiragi283.lib.recipe - -import hiiragi283.lib.registry.createKey -import hiiragi283.lib.resource.HTValueWithKey -import hiiragi283.lib.resource.toLanguageKey -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.util.Ior -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.RecipeType - -@JvmRecord -data class HTRecipeType>(private val id: Identifier) : - RecipeType, - HTValueWithKey, HTRecipeType>, - HTHasText.Translatable { - - override fun unwrapWithKey(): Ior>, HTRecipeType> = - Ior.Both(Registries.RECIPE_TYPE.createKey(id), this) - - override val translationKey: String get() = keyOrThrow.toLanguageKey() -} diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlock.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlock.kt index 9414e6f43..dadfc476e 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlock.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredBlock.kt @@ -1,7 +1,5 @@ package hiiragi283.lib.registry -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.lib.text.Text import net.minecraft.core.registries.Registries import net.minecraft.resources.Identifier @@ -22,10 +20,7 @@ typealias HTSimpleDeferredBlock = HTDeferredBlock * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTDeferredBlock : - HTDeferredHolder, - HTHasTranslationKey, - HTHasText { +class HTDeferredBlock : HTDeferredHolder.Translatable { constructor(key: ResourceKey) : super(key) constructor(id: Identifier) : super(Registries.BLOCK.createKey(id)) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredFluidType.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredFluidType.kt index 77def2518..5ee83b183 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredFluidType.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredFluidType.kt @@ -1,7 +1,5 @@ package hiiragi283.lib.registry -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.lib.text.Text import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey @@ -21,10 +19,7 @@ typealias HTSimpleDeferredFluidType = HTDeferredFluidType * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTDeferredFluidType : - HTDeferredHolder, - HTHasTranslationKey, - HTHasText { +class HTDeferredFluidType : HTDeferredHolder.Translatable { constructor(key: ResourceKey) : super(key) constructor(id: Identifier) : super(NeoForgeRegistries.Keys.FLUID_TYPES, id) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt index ab2786b7d..6939642f1 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt @@ -1,6 +1,8 @@ package hiiragi283.lib.registry import hiiragi283.lib.resource.HTValueWithKey +import hiiragi283.lib.resource.toLanguageKey +import hiiragi283.lib.text.HTHasText import hiiragi283.lib.util.Either import hiiragi283.lib.util.Ior import hiiragi283.lib.util.toIor @@ -44,4 +46,20 @@ open class HTDeferredHolder : } final override fun unwrapWithKey(): Ior, T> = asOptional().toIor { this.key } + + /** + * @param R レジストリの要素のクラス + * @param T 要素のクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class Translatable : + HTDeferredHolder, + HTHasText.Translatable { + constructor(key: ResourceKey) : super(key) + + constructor(key: RegistryKey, id: Identifier) : super(key, id) + + override val translationKey: String = key.toLanguageKey() + } } diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt index 9742692d7..95098c44b 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredItem.kt @@ -1,8 +1,6 @@ package hiiragi283.lib.registry import hiiragi283.lib.item.HTItemInstanceLike -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.lib.text.Text import net.minecraft.core.component.DataComponentPatch import net.minecraft.core.registries.Registries @@ -27,9 +25,7 @@ typealias HTSimpleDeferredItem = HTDeferredItem * @since 26.1.0 */ class HTDeferredItem : - HTDeferredHolder, - HTHasTranslationKey, - HTHasText, + HTDeferredHolder.Translatable, ItemLike, HTItemInstanceLike { constructor(key: ResourceKey) : super(key) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredMobEffect.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredMobEffect.kt index af4d3bb27..ee6b74f98 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredMobEffect.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredMobEffect.kt @@ -1,7 +1,5 @@ package hiiragi283.lib.registry -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.lib.text.Text import net.minecraft.core.registries.Registries import net.minecraft.resources.Identifier @@ -14,10 +12,7 @@ import net.minecraft.world.effect.MobEffect * @author Hiiragi Tsubasa * @since 26.1.0 */ -class HTDeferredMobEffect : - HTDeferredHolder, - HTHasTranslationKey, - HTHasText { +class HTDeferredMobEffect : HTDeferredHolder.Translatable { constructor(key: ResourceKey) : super(key) constructor(id: Identifier) : super(Registries.MOB_EFFECT, id) diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredRegister.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredRegister.kt index d6d518556..c9fef5c3e 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredRegister.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredRegister.kt @@ -48,4 +48,30 @@ open class HTDeferredRegister(registryKey: RegistryKey, namespace: S override fun register(name: String, func: Function): HTDeferredHolder = super.register(name, func) as HTDeferredHolder + + /** + * @param R レジストリの要素のクラス + * @param registryKey レジストリのキー + * @param namespace 登録する値の名前空間 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + open class Translatable(registryKey: RegistryKey, namespace: String) : + HTDeferredRegister(registryKey, namespace) { + override fun createHolder( + registryKey: RegistryKey, + key: Identifier + ): HTDeferredHolder.Translatable = HTDeferredHolder.Translatable(registryKey, key) + + override fun register(name: String, sup: Supplier): HTDeferredHolder.Translatable = + super.register(name, sup) as HTDeferredHolder.Translatable + + override fun register( + name: String, + func: Function + ): HTDeferredHolder.Translatable = super.register(name, func) as HTDeferredHolder.Translatable + + override fun asSequence(): Sequence> = + super.asSequence().filterIsInstance>() + } } diff --git a/src/lib/kotlin/hiiragi283/lib/resource/HTValueAndKey.kt b/src/lib/kotlin/hiiragi283/lib/resource/HTValueAndKey.kt deleted file mode 100644 index c0836be2c..000000000 --- a/src/lib/kotlin/hiiragi283/lib/resource/HTValueAndKey.kt +++ /dev/null @@ -1,20 +0,0 @@ -package hiiragi283.lib.resource - -import hiiragi283.lib.util.Ior -import net.minecraft.resources.ResourceKey - -/** - * 常にキーと値を持つ[HTValueWithKey]の実装クラスです。 - * @param R レジストリの値のクラス - * @param T 提供する値のクラス - * @author Hiiragi Tsubasa - * @since 26.1.7 - */ -@JvmRecord -data class HTValueAndKey(val key: ResourceKey, val value: T) : HTValueWithKey { - override fun unwrapWithKey(): Ior, T> = Ior.Both(key, value) - - override val keyOrNull: ResourceKey get() = key - - override fun getOrNull(): T = value -} diff --git a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithId.kt b/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithId.kt deleted file mode 100644 index 13e40d6d6..000000000 --- a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithId.kt +++ /dev/null @@ -1,39 +0,0 @@ -package hiiragi283.lib.resource - -import hiiragi283.lib.util.Ior -import net.minecraft.resources.Identifier - -/** - * [ID][Identifier]または値を提供するインターフェースです。 - * @param T 提供する値のクラス - * @author Hiiragi Tsubasa - * @since 26.1.2 - */ -fun interface HTValueWithId { - /** - * 保持している値を[Ior]に変換します。 - */ - fun unwrapWithId(): Ior - - /** - * [ID][Identifier]を取得します。 - */ - val idOrNull: Identifier? get() = unwrapWithId().getLeft() - - /** - * [ID][Identifier]を取得します。 - * @throws IllegalStateException [idOrNull]が`null`の場合 - */ - val idOrThrow: Identifier get() = idOrNull ?: error("Unknown id for ${getOrThrow()}") - - /** - * 値を取得します。 - */ - fun getOrNull(): T? = unwrapWithId().getRight() - - /** - * 値を取得します。 - * @throws IllegalStateException [getOrNull]が`null`の場合 - */ - fun getOrThrow(): T = getOrNull() ?: error("Unknown value for $idOrThrow") -} diff --git a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt b/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt index 616972584..8adc155f1 100644 --- a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt +++ b/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt @@ -13,13 +13,13 @@ import net.minecraft.resources.ResourceKey typealias HTSimpleValueWithKey = HTValueWithKey /** - * [ID][ResourceKey]または値を提供する[HTValueWithId]の拡張インターフェースです。 + * [ID][ResourceKey]または値を提供するインターフェースです。 * @param R レジストリの値のクラス * @param T 提供する値のクラス * @author Hiiragi Tsubasa * @since 26.1.2 */ -fun interface HTValueWithKey : HTValueWithId { +fun interface HTValueWithKey { /** * 保持している値を[Ior]に変換します。 */ @@ -36,5 +36,25 @@ fun interface HTValueWithKey : HTValueWithId { */ val keyOrThrow: ResourceKey get() = keyOrNull ?: error("Unregistered value for ${getOrThrow()}") - override fun unwrapWithId(): Ior = unwrapWithKey().mapLeft(ResourceKey::identifier) + /** + * [ID][Identifier]を取得します。 + */ + val idOrNull: Identifier? get() = keyOrNull?.identifier() + + /** + * [ID][Identifier]を取得します。 + * @throws IllegalStateException [idOrNull]が`null`の場合 + */ + val idOrThrow: Identifier get() = idOrNull ?: error("Unknown id for ${getOrThrow()}") + + /** + * 値を取得します。 + */ + fun getOrNull(): T? = unwrapWithKey().getRight() + + /** + * 値を取得します。 + * @throws IllegalStateException [getOrNull]が`null`の場合 + */ + fun getOrThrow(): T = getOrNull() ?: error("Unknown value for $idOrThrow") } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt index 3cd15ddfd..5a83b52f8 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAlloyingRecipe.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe @@ -9,6 +8,7 @@ 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 +import net.minecraft.world.item.crafting.RecipeType class RTAlloyingRecipe( ingredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTAlloyingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ALLOYING - override fun getType(): HTRecipeType = RagiumRecipeTypes.ALLOYING + override fun getType(): RecipeType = RagiumRecipeTypes.ALLOYING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAssemblingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAssemblingRecipe.kt index 4d864d073..0a15fe49f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAssemblingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTAssemblingRecipe.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe @@ -9,6 +8,7 @@ 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 +import net.minecraft.world.item.crafting.RecipeType class RTAssemblingRecipe( ingredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTAssemblingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ASSEMBLING - override fun getType(): HTRecipeType = RagiumRecipeTypes.ASSEMBLING + override fun getType(): RecipeType = RagiumRecipeTypes.ASSEMBLING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBathingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBathingRecipe.kt index 164b4b464..195f5c10d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBathingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBathingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -9,6 +8,7 @@ import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.result.HTItemResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTBathingRecipe( itemIngredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTBathingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.BATHING - override fun getType(): HTRecipeType = RagiumRecipeTypes.BATHING + override fun getType(): RecipeType = RagiumRecipeTypes.BATHING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBrewingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBrewingRecipe.kt index 6ba3a1982..4a82b82f3 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBrewingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTBrewingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -9,6 +8,7 @@ import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTBrewingRecipe( itemIngredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTBrewingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.BREWING - override fun getType(): HTRecipeType = RagiumRecipeTypes.BREWING + override fun getType(): RecipeType = RagiumRecipeTypes.BREWING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt index d935afbb5..8783ef87d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCentrifugingRecipe.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -9,6 +8,7 @@ import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTCentrifugingRecipe(ingredient: HTFluidIngredient, result: Nel, progressData: HTProgressData) : HTFluidToDoubleFluidRecipe.Basic(ingredient, result, progressData), @@ -21,5 +21,5 @@ class RTCentrifugingRecipe(ingredient: HTFluidIngredient, result: Nel = RagiumRecipeSerializers.CENTRIFUGING - override fun getType(): HTRecipeType = RagiumRecipeTypes.CENTRIFUGING + override fun getType(): RecipeType = RagiumRecipeTypes.CENTRIFUGING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCompressingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCompressingRecipe.kt index ccb7add89..98e81857b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCompressingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCompressingRecipe.kt @@ -1,12 +1,12 @@ 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.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTCompressingRecipe(ingredient: HTItemIngredient, result: HTItemResult, progressData: HTProgressData) : @@ -20,5 +20,5 @@ class RTCompressingRecipe(ingredient: HTItemIngredient, result: HTItemResult, pr override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.COMPRESSING - override fun getType(): HTRecipeType = RagiumRecipeTypes.COMPRESSING + override fun getType(): RecipeType = RagiumRecipeTypes.COMPRESSING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCrushingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCrushingRecipe.kt index 5f413883f..1d1f33ad3 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCrushingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCrushingRecipe.kt @@ -1,13 +1,13 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe 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.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTCrushingRecipe(ingredient: HTItemIngredient, result: Nel, progressData: HTProgressData) : @@ -21,5 +21,5 @@ class RTCrushingRecipe(ingredient: HTItemIngredient, result: Nel, override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.CRUSHING - override fun getType(): HTRecipeType = RagiumRecipeTypes.CRUSHING + override fun getType(): RecipeType = RagiumRecipeTypes.CRUSHING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCuttingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCuttingRecipe.kt index fc4b53e52..5358c9080 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCuttingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTCuttingRecipe.kt @@ -1,13 +1,13 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe 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.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTCuttingRecipe(ingredient: HTItemIngredient, result: Nel, progressData: HTProgressData) : @@ -21,5 +21,5 @@ class RTCuttingRecipe(ingredient: HTItemIngredient, result: Nel, p override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.CUTTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.CUTTING + override fun getType(): RecipeType = RagiumRecipeTypes.CUTTING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt index 3fe341a73..2c5bdf00f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTDrainingRecipe.kt @@ -1,12 +1,12 @@ 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.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTDrainingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : @@ -20,5 +20,5 @@ class RTDrainingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResult override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.DRAINING - override fun getType(): HTRecipeType = RagiumRecipeTypes.DRAINING + override fun getType(): RecipeType = RagiumRecipeTypes.DRAINING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt index 96be228b6..bd574513b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTElectrolyzingRecipe.kt @@ -3,7 +3,6 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe @@ -19,6 +18,7 @@ import hiiragi283.lib.serialization.network.nelOf import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.neoforged.neoforge.fluids.FluidInstance import net.neoforged.neoforge.fluids.FluidStack @@ -72,7 +72,7 @@ data class RTElectrolyzingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ELECTROLYZING - override fun getType(): HTRecipeType = RagiumRecipeTypes.ELECTROLYZING + override fun getType(): RecipeType = RagiumRecipeTypes.ELECTROLYZING @JvmRecord data class ElectrolyzedResult(val right: FluidStack, val left: FluidStack, val main: FluidStack) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt index 2a0fac445..7a7c29631 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTEnchantingRecipe.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -18,6 +17,7 @@ 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.crafting.RecipeType @JvmRecord data class RTEnchantingRecipe( @@ -65,5 +65,5 @@ data class RTEnchantingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.ENCHANTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.ENCHANTING + override fun getType(): RecipeType = RagiumRecipeTypes.ENCHANTING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFillingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFillingRecipe.kt index 168902f35..1125a54a6 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFillingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFillingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -9,6 +8,7 @@ import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.result.HTItemResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTFillingRecipe( itemIngredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTFillingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.FILLING - override fun getType(): HTRecipeType = RagiumRecipeTypes.FILLING + override fun getType(): RecipeType = RagiumRecipeTypes.FILLING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt index 0fe42add0..a83ddf3d9 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -8,6 +7,7 @@ import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTItemResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTFreezingRecipe(ingredient: HTFluidIngredient, result: HTItemResult, progressData: HTProgressData) : HTFluidToRecipe.BasicItem(ingredient, result, progressData), @@ -20,5 +20,5 @@ class RTFreezingRecipe(ingredient: HTFluidIngredient, result: HTItemResult, prog override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.FREEZING - override fun getType(): HTRecipeType = RagiumRecipeTypes.FREEZING + override fun getType(): RecipeType = RagiumRecipeTypes.FREEZING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMeltingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMeltingRecipe.kt index ff26fecb8..af526cb5b 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMeltingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMeltingRecipe.kt @@ -1,12 +1,12 @@ 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.HTFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTMeltingRecipe(ingredient: HTItemIngredient, result: HTFluidResult, progressData: HTProgressData) : @@ -20,5 +20,5 @@ class RTMeltingRecipe(ingredient: HTItemIngredient, result: HTFluidResult, progr override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.MELTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.MELTING + override fun getType(): RecipeType = RagiumRecipeTypes.MELTING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt index d4456bdad..ed86d8e48 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -9,6 +8,7 @@ import hiiragi283.lib.recipe.ingredient.HTItemIngredient import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.result.HTFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTMixingRecipe( itemIngredient: HTItemIngredient, @@ -25,5 +25,5 @@ class RTMixingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.MIXING - override fun getType(): HTRecipeType = RagiumRecipeTypes.MIXING + override fun getType(): RecipeType = RagiumRecipeTypes.MIXING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPlantingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPlantingRecipe.kt index 8ed2209e3..b440b19ad 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPlantingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPlantingRecipe.kt @@ -1,13 +1,13 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe 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.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTPlantingRecipe(ingredient: HTItemIngredient, result: Nel, progressData: HTProgressData) : @@ -21,5 +21,5 @@ class RTPlantingRecipe(ingredient: HTItemIngredient, result: Nel, override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.PLANTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.PLANTING + override fun getType(): RecipeType = RagiumRecipeTypes.PLANTING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt index 0a1cd32a8..1f5dab5f4 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTPyrolyzingRecipe.kt @@ -1,12 +1,12 @@ 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.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.SingleRecipeInput class RTPyrolyzingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : @@ -20,5 +20,5 @@ class RTPyrolyzingRecipe(ingredient: HTItemIngredient, result: HTItemOrFluidResu override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.PYROLYZING - override fun getType(): HTRecipeType = RagiumRecipeTypes.PYROLYZING + override fun getType(): RecipeType = RagiumRecipeTypes.PYROLYZING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt index 5156b04ca..8930c5fcc 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTReactingRecipe.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe @@ -16,6 +15,7 @@ import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.neoforged.neoforge.fluids.FluidInstance interface RTReactingRecipe : @@ -70,6 +70,6 @@ interface RTReactingRecipe : override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.REACTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.REACTING + override fun getType(): RecipeType = RagiumRecipeTypes.REACTING } } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt index a63c9c2e9..36c7e51bc 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTRefiningRecipe.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -8,6 +7,7 @@ import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput import hiiragi283.lib.recipe.result.HTItemOrFluidResult import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType class RTRefiningRecipe(ingredient: HTFluidIngredient, result: HTItemOrFluidResult, progressData: HTProgressData) : HTFluidToRecipe.BasicItemAndFluid(ingredient, result, progressData), @@ -20,5 +20,5 @@ class RTRefiningRecipe(ingredient: HTFluidIngredient, result: HTItemOrFluidResul override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.REFINING - override fun getType(): HTRecipeType = RagiumRecipeTypes.REFINING + override fun getType(): RecipeType = RagiumRecipeTypes.REFINING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt index 6a4850c46..abe204113 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTResourceExtractingRecipe.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe @@ -15,6 +14,7 @@ import hiiragi283.lib.serialization.codec.HTCodecs import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.level.block.state.pattern.BlockInWorld import net.neoforged.neoforge.fluids.FluidStack @@ -58,5 +58,5 @@ class RTResourceExtractingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.RESOURCE_EXTRACTING - override fun getType(): HTRecipeType = RagiumRecipeTypes.RESOURCE_EXTRACTING + override fun getType(): RecipeType = RagiumRecipeTypes.RESOURCE_EXTRACTING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt index 30e0d2609..4f6c214ba 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTWashingRecipe.kt @@ -3,7 +3,6 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec import hiiragi283.lib.HTConstants import hiiragi283.lib.collection.Nel -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.HTSerializableRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTProgressData @@ -21,6 +20,7 @@ import net.minecraft.network.codec.StreamCodec import net.minecraft.world.item.ItemInstance import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeSerializer +import net.minecraft.world.item.crafting.RecipeType import net.neoforged.neoforge.fluids.FluidInstance @JvmRecord @@ -77,5 +77,5 @@ data class RTWashingRecipe( override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.WASHING - override fun getType(): HTRecipeType = RagiumRecipeTypes.WASHING + override fun getType(): RecipeType = RagiumRecipeTypes.WASHING } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 5865573ec..bed76220f 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToItemAndFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToItemRecipe @@ -18,6 +17,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeInput +import net.minecraft.world.item.crafting.RecipeType /** * Ragiumで使用される[HTRecipeLookup]をまとめたクラスです。 @@ -31,7 +31,7 @@ data object RagiumRecipeLookups { @JvmStatic private fun > create( - recipeType: HTRecipeType + recipeType: RecipeType ): HTRecipeLookup = HTVanillaRecipeLookup(recipeType) // Mechanical diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt index 3a3f03ef8..7d604f07c 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeTypes.kt @@ -1,99 +1,105 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConstants -import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap +import net.minecraft.resources.Identifier import net.minecraft.world.item.crafting.Recipe +import net.minecraft.world.item.crafting.RecipeType import net.neoforged.bus.api.SubscribeEvent import net.neoforged.fml.common.EventBusSubscriber import net.neoforged.neoforge.event.OnDatapackSyncEvent /** - * Ragiumで使用される[HTRecipeType]をまとめたクラスです。 + * Ragiumで使用される[RecipeType]をまとめたクラスです。 * @author Hiiragi Tsubasa * @since 26.1.0 */ @EventBusSubscriber data object RagiumRecipeTypes { @JvmStatic - val allTypes: Set> field: MutableSet> = ObjectLinkedOpenHashSet() + val allTypes: Map> + field: MutableMap> = Object2ObjectLinkedOpenHashMap() @JvmStatic - private fun > create(name: String): HTRecipeType = - HTRecipeType(RagiumAPI.id(name)).also(allTypes::add) + private fun > create(name: String): RecipeType { + val id: Identifier = RagiumAPI.id(name) + val recipeType: RecipeType = RecipeType.simple(id) + allTypes[id] = recipeType + return recipeType + } @SubscribeEvent fun onDatapackSync(event: OnDatapackSyncEvent) { - event.sendRecipes(allTypes) + event.sendRecipes(allTypes.values) } // Mechanical @JvmField - val ASSEMBLING: HTRecipeType = create(RagiumConstants.ASSEMBLING) + val ASSEMBLING: RecipeType = create(RagiumConstants.ASSEMBLING) @JvmField - val COMPRESSING: HTRecipeType = create(RagiumConstants.COMPRESSING) + val COMPRESSING: RecipeType = create(RagiumConstants.COMPRESSING) @JvmField - val CRUSHING: HTRecipeType = create(RagiumConstants.CRUSHING) + val CRUSHING: RecipeType = create(RagiumConstants.CRUSHING) @JvmField - val CUTTING: HTRecipeType = create(RagiumConstants.CUTTING) + val CUTTING: RecipeType = create(RagiumConstants.CUTTING) @JvmField - val DRAINING: HTRecipeType = create(RagiumConstants.DRAINING) + val DRAINING: RecipeType = create(RagiumConstants.DRAINING) @JvmField - val FILLING: HTRecipeType = create(RagiumConstants.FILLING) + val FILLING: RecipeType = create(RagiumConstants.FILLING) // Heat @JvmField - val ALLOYING: HTRecipeType = create(RagiumConstants.ALLOYING) + val ALLOYING: RecipeType = create(RagiumConstants.ALLOYING) @JvmField - val FREEZING: HTRecipeType = create(RagiumConstants.FREEZING) + val FREEZING: RecipeType = create(RagiumConstants.FREEZING) @JvmField - val MELTING: HTRecipeType = create(RagiumConstants.MELTING) + val MELTING: RecipeType = create(RagiumConstants.MELTING) @JvmField - val PYROLYZING: HTRecipeType = create(RagiumConstants.PYROLYZING) + val PYROLYZING: RecipeType = create(RagiumConstants.PYROLYZING) @JvmField - val REFINING: HTRecipeType = create(RagiumConstants.REFINING) + val REFINING: RecipeType = create(RagiumConstants.REFINING) // Chemical @JvmField - val BATHING: HTRecipeType = create(RagiumConstants.BATHING) + val BATHING: RecipeType = create(RagiumConstants.BATHING) @JvmField - val CENTRIFUGING: HTRecipeType = create(RagiumConstants.CENTRIFUGING) + val CENTRIFUGING: RecipeType = create(RagiumConstants.CENTRIFUGING) @JvmField - val MIXING: HTRecipeType = create(RagiumConstants.MIXING) + val MIXING: RecipeType = create(RagiumConstants.MIXING) @JvmField - val REACTING: HTRecipeType = create(RagiumConstants.REACTING) + val REACTING: RecipeType = create(RagiumConstants.REACTING) @JvmField - val WASHING: HTRecipeType = create(RagiumConstants.WASHING) + val WASHING: RecipeType = create(RagiumConstants.WASHING) // Bio @JvmField - val BREWING: HTRecipeType = create(RagiumConstants.BREWING) + val BREWING: RecipeType = create(RagiumConstants.BREWING) @JvmField - val PLANTING: HTRecipeType = create(RagiumConstants.PLANTING) + val PLANTING: RecipeType = create(RagiumConstants.PLANTING) // Electronics @JvmField - val ELECTROLYZING: HTRecipeType = create(RagiumConstants.ELECTROLYZING) + val ELECTROLYZING: RecipeType = create(RagiumConstants.ELECTROLYZING) @JvmField - val RESOURCE_EXTRACTING: HTRecipeType = create(RagiumConstants.RESOURCE_EXTRACTING) + val RESOURCE_EXTRACTING: RecipeType = create(RagiumConstants.RESOURCE_EXTRACTING) // Arcane @JvmField - val ENCHANTING: HTRecipeType = create(RagiumConstants.ENCHANTING) + val ENCHANTING: RecipeType = create(RagiumConstants.ENCHANTING) } diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt index bd4aa682d..293fd96fe 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt @@ -2,12 +2,14 @@ package hiiragi283.lib.integration.jei import hiiragi283.lib.item.HTItemInstanceLike import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.resource.HTValueWithId import hiiragi283.lib.text.HTHasText +import hiiragi283.lib.text.translatableText import hiiragi283.lib.util.Either import mezz.jei.api.recipe.types.IRecipeType +import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.resources.Identifier import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.RecipeType /** * [HTRecipeHolder]向けの[HTJeiRecipeType]のエイリアスです。 @@ -49,18 +51,9 @@ inline fun HTJeiRecipeType( /** * @author Hiiragi Tsubasa - * @since 26.1.0 + * @since 26.1.8 */ -inline fun HTJeiRecipeType( - id: U, - icon: ItemStack -): HTJeiRecipeType where U : HTValueWithId<*>, U : HTHasText = HTJeiRecipeType(id.idOrThrow, id, Either.Right(icon)) - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -inline fun HTJeiRecipeType( - id: U, - icon: HTItemInstanceLike -): HTJeiRecipeType where U : HTValueWithId<*>, U : HTHasText = HTJeiRecipeType(id, icon.toStack()) +inline fun HTJeiRecipeType(type: RecipeType<*>, icon: HTItemInstanceLike): HTJeiRecipeType { + val id: Identifier = BuiltInRegistries.RECIPE_TYPE.getKeyOrNull(type) ?: error("Unregistered recipe type: $type") + return HTJeiRecipeType(id, HTHasText { translatableText(id.toLanguageKey()) }, Either.Right(icon.toStack())) +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index e8943e353..69e56a77e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -4,11 +4,9 @@ import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.sync.HTFluidSyncPayload import hiiragi283.lib.gui.sync.HTIntSyncPayload import hiiragi283.lib.gui.sync.HTItemSyncPayload -import hiiragi283.lib.gui.widget.HTWidgetType import hiiragi283.lib.item.HTCreativeModeTabHelper import hiiragi283.lib.mod.HTCommonMod import hiiragi283.lib.network.HTPayloadHandlers -import hiiragi283.lib.recipe.HTRecipeType import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.recipe.ingredient.HTPotionFluidIngredient import hiiragi283.lib.recipe.result.HTFluidResult @@ -59,6 +57,8 @@ data object Ragium : HTCommonMod() { RagiumMobEffects.register(eventBus) RagiumPotions.register(eventBus) + RagiumWidgetTypes.REGISTER.register(eventBus) + container.registerConfig(ModConfig.Type.COMMON, RagiumConfig.COMMON_SPEC) container.registerConfig(ModConfig.Type.SERVER, RagiumConfig.SERVER_SPEC) } @@ -106,9 +106,7 @@ data object Ragium : HTCommonMod() { RagiumRecipeSerializers.allSerializers.forEach(helper::register) } event.register(Registries.RECIPE_TYPE) { helper -> - for (recipeType: HTRecipeType<*> in RagiumRecipeTypes.allTypes) { - helper.register(recipeType.keyOrThrow, recipeType) - } + RagiumRecipeTypes.allTypes.forEach(helper::register) } event.register(NeoForgeRegistries.Keys.INGREDIENT_TYPES) { helper -> @@ -138,11 +136,6 @@ data object Ragium : HTCommonMod() { helper.register(RagiumAPI.id(HTConstants.ITEM), HTItemSyncPayload.TYPE) helper.register(RagiumAPI.id(HTConstants.FLUID), HTFluidSyncPayload.TYPE) } - event.register(RagiumRegistries.Keys.WIDGET_TYPE) { helper -> - for (widgetType: HTWidgetType<*> in RagiumWidgetTypes.allTypes) { - helper.register(widgetType.keyOrThrow, widgetType) - } - } } override fun commonSetup(event: FMLCommonSetupEvent) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTEnergySlotWidget.kt b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTEnergySlotWidget.kt index 1fbc52341..ff57885c4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTEnergySlotWidget.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTEnergySlotWidget.kt @@ -7,7 +7,7 @@ import hiiragi283.lib.transfer.energy.HTEnergyHandler class HTEnergySlotWidget(handler: HTEnergyHandler, x: Int, y: Int) : HTAbstractWidget(x, y, 18, 18), HTEnergyHandler by handler { - override fun getType(): HTWidgetType = RagiumWidgetTypes.ENERGY + override fun getType(): HTWidgetType = RagiumWidgetTypes.ENERGY.get() override fun toString(): String = "HTEnergySlotWidget(bounds=$bounds, amount=$amount, capacity=$capacity)" } diff --git a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTFluidWidget.kt b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTFluidWidget.kt index 126ac42df..9f9ca3fab 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTFluidWidget.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTFluidWidget.kt @@ -27,7 +27,7 @@ sealed class HTFluidWidget( HTGhostWidget, HTIngredientWidget, HTFluidView by view { - final override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.FLUID + final override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.FLUID.get() final override fun mouseClicked(access: HTWidget.Access, mouseX: Double, mouseY: Double, button: Int) { if (isGhost) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTItemWidget.kt b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTItemWidget.kt index 160e4d592..a67d249a7 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTItemWidget.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTItemWidget.kt @@ -18,7 +18,7 @@ sealed class HTItemWidget(val backgroundType: HTBackgroundType) : HTIngredientWidget { abstract fun getStack(): ItemStack - final override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.ITEM + final override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.ITEM.get() final override fun getIngredient(): ItemStack = getStack() diff --git a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTProgressWidget.kt b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTProgressWidget.kt index 65635a842..793e3b716 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTProgressWidget.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/HTProgressWidget.kt @@ -40,7 +40,7 @@ class HTProgressWidget : HTAbstractWidget { fun getProgress(): Float = progressGetter() - override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.PROGRESS + override fun getType(): HTWidgetType<*> = RagiumWidgetTypes.PROGRESS.get() override fun toString(): String = "HTProgressWidget(bounds=$bounds, progress=${getProgress()}, fillDirection=$fillDirection)" diff --git a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/RagiumWidgetTypes.kt b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/RagiumWidgetTypes.kt index c15137ef2..59666b537 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/gui/widget/RagiumWidgetTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/gui/widget/RagiumWidgetTypes.kt @@ -1,28 +1,30 @@ package hiiragi283.ragium.common.gui.widget import hiiragi283.lib.HTConstants -import hiiragi283.lib.gui.widget.HTWidget import hiiragi283.lib.gui.widget.HTWidgetType +import hiiragi283.lib.registry.HTDeferredHolder +import hiiragi283.lib.registry.HTDeferredRegister import hiiragi283.ragium.api.RagiumAPI -import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet +import hiiragi283.ragium.api.RagiumRegistries data object RagiumWidgetTypes { - @JvmStatic - val allTypes: Set> field: MutableSet> = ObjectLinkedOpenHashSet() - - @JvmStatic - private fun create(name: String): HTWidgetType = - HTWidgetType(RagiumAPI.id(name)).also(allTypes::add) + @JvmField + val REGISTER: HTDeferredRegister> = + HTDeferredRegister(RagiumRegistries.Keys.WIDGET_TYPE, RagiumAPI.MOD_ID) @JvmField - val ENERGY: HTWidgetType = create(HTConstants.ENERGY) + val ENERGY: HTDeferredHolder, HTWidgetType> = + REGISTER.register(HTConstants.ENERGY, HTWidgetType.Companion::simple) @JvmField - val FLUID: HTWidgetType = create(HTConstants.FLUID) + val FLUID: HTDeferredHolder, HTWidgetType> = + REGISTER.register(HTConstants.FLUID, HTWidgetType.Companion::simple) @JvmField - val ITEM: HTWidgetType = create(HTConstants.ITEM) + val ITEM: HTDeferredHolder, HTWidgetType> = + REGISTER.register(HTConstants.ITEM, HTWidgetType.Companion::simple) @JvmField - val PROGRESS: HTWidgetType = create("progress") + val PROGRESS: HTDeferredHolder, HTWidgetType> = + REGISTER.register("progress", HTWidgetType.Companion::simple) } From b27e9d34e5da618569144275e708625db5e6dd6f Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sat, 3 Oct 2026 23:16:29 +0900 Subject: [PATCH 37/38] =?UTF-8?q?feat!:=20Gypsum=E8=A6=81=E3=82=89?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=81=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/lang/RagiumLangProvider.kt | 5 - .../ragium/data/model/RagiumModelProvider.kt | 2 - .../data/recipe/RagiumCommonRecipeProvider.kt | 10 - .../recipe/RagiumVanillaRecipeProvider.kt | 10 - .../assets/ragium/blockstates/gypsum.json | 7 - .../ragium/blockstates/gypsum_slab.json | 13 -- .../ragium/blockstates/gypsum_stairs.json | 209 ------------------ .../ragium/blockstates/gypsum_wall.json | 90 -------- .../ragium/blockstates/smooth_gypsum.json | 7 - .../blockstates/smooth_gypsum_slab.json | 13 -- .../blockstates/smooth_gypsum_stairs.json | 209 ------------------ .../blockstates/smooth_gypsum_wall.json | 90 -------- .../resources/assets/ragium/items/gypsum.json | 6 - .../assets/ragium/items/gypsum_slab.json | 6 - .../assets/ragium/items/gypsum_stairs.json | 6 - .../assets/ragium/items/gypsum_wall.json | 6 - .../assets/ragium/items/smooth_gypsum.json | 6 - .../ragium/items/smooth_gypsum_slab.json | 6 - .../ragium/items/smooth_gypsum_stairs.json | 6 - .../ragium/items/smooth_gypsum_wall.json | 6 - .../resources/assets/ragium/lang/en_us.json | 8 - .../resources/assets/ragium/lang/ja_jp.json | 8 - .../assets/ragium/models/block/gypsum.json | 6 - .../ragium/models/block/gypsum_slab.json | 8 - .../ragium/models/block/gypsum_slab_top.json | 8 - .../ragium/models/block/gypsum_stairs.json | 8 - .../models/block/gypsum_stairs_inner.json | 8 - .../models/block/gypsum_stairs_outer.json | 8 - .../models/block/gypsum_wall_inventory.json | 6 - .../ragium/models/block/gypsum_wall_post.json | 6 - .../ragium/models/block/gypsum_wall_side.json | 6 - .../models/block/gypsum_wall_side_tall.json | 6 - .../ragium/models/block/smooth_gypsum.json | 6 - .../models/block/smooth_gypsum_slab.json | 8 - .../models/block/smooth_gypsum_slab_top.json | 8 - .../models/block/smooth_gypsum_stairs.json | 8 - .../block/smooth_gypsum_stairs_inner.json | 8 - .../block/smooth_gypsum_stairs_outer.json | 8 - .../block/smooth_gypsum_wall_inventory.json | 6 - .../models/block/smooth_gypsum_wall_post.json | 6 - .../models/block/smooth_gypsum_wall_side.json | 6 - .../block/smooth_gypsum_wall_side_tall.json | 6 - .../tags/block/mineable/pickaxe.json | 8 - .../data/minecraft/tags/block/slabs.json | 4 +- .../data/minecraft/tags/block/stairs.json | 4 +- .../data/minecraft/tags/block/walls.json | 4 +- .../data/minecraft/tags/item/slabs.json | 4 +- .../data/minecraft/tags/item/stairs.json | 4 +- .../data/minecraft/tags/item/walls.json | 4 +- .../data/ragium/loot_table/blocks/gypsum.json | 21 -- .../ragium/loot_table/blocks/gypsum_slab.json | 35 --- .../loot_table/blocks/gypsum_stairs.json | 21 -- .../ragium/loot_table/blocks/gypsum_wall.json | 21 -- .../loot_table/blocks/smooth_gypsum.json | 21 -- .../loot_table/blocks/smooth_gypsum_slab.json | 35 --- .../blocks/smooth_gypsum_stairs.json | 21 -- .../loot_table/blocks/smooth_gypsum_wall.json | 21 -- .../ragium/recipe/crushing/gypsum_dust.json | 15 -- .../ragium/recipe/shaped/gypsum_slab.json | 15 -- .../ragium/recipe/shaped/gypsum_stairs.json | 17 -- .../ragium/recipe/shaped/gypsum_wall.json | 16 -- .../ragium/recipe/shaped/smooth_gypsum.json | 15 -- .../recipe/shaped/smooth_gypsum_slab.json | 15 -- .../recipe/shaped/smooth_gypsum_stairs.json | 17 -- .../recipe/shaped/smooth_gypsum_wall.json | 16 -- .../recipe/stonecutting/gypsum_slab.json | 8 - .../recipe/stonecutting/gypsum_stairs.json | 7 - .../recipe/stonecutting/gypsum_wall.json | 7 - .../stonecutting/smooth_gypsum_slab.json | 11 - .../stonecutting/smooth_gypsum_stairs.json | 10 - .../stonecutting/smooth_gypsum_wall.json | 10 - .../resources/reports/ragium/registries.json | 16 -- .../lib/registry/HTDeferredHolder.kt | 9 +- .../hiiragi283/lib/resource/HTValueWithKey.kt | 12 +- .../ragium/common/block/RagiumBlocks.kt | 34 +-- 75 files changed, 16 insertions(+), 1331 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/gypsum_wall.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json delete mode 100644 src/generated/resources/assets/ragium/items/gypsum.json delete mode 100644 src/generated/resources/assets/ragium/items/gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/items/gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/items/gypsum_wall.json delete mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum.json delete mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json delete mode 100644 src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json delete mode 100644 src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json delete mode 100644 src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index d6bf51c0b..44c82e8e0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -32,11 +32,6 @@ interface RagiumLangProvider { provider.addDecoration(RagiumBlocks.FLUORITE_DECORATION, RagiumMaterial.Gem.FLUORITE) provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) provider.addDecoration(RagiumBlocks.CRYOLITE_DECORATION, RagiumMaterial.Gem.CRYOLITE) - provider.add(RagiumBlocks.GYPSUM, RagiumMaterial.Mineral.GYPSUM) - provider.addDecoration(RagiumBlocks.GYPSUM_DECORATION, RagiumMaterial.Mineral.GYPSUM) - val smoothGypsum = HTLangName("Smooth Gypsum", "滑らかな石膏") - provider.add(RagiumBlocks.SMOOTH_GYPSUM, smoothGypsum) - provider.addDecoration(RagiumBlocks.SMOOTH_GYPSUM_DECORATION, smoothGypsum) val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 718eb0bc7..3e7fa5536 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -69,8 +69,6 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP yield(RagiumBlocks.ECHO_BLOCK) yield(RagiumBlocks.FLUORITE_BLOCK) yield(RagiumBlocks.CRYOLITE_BLOCK) - yield(RagiumBlocks.GYPSUM) - yield(RagiumBlocks.SMOOTH_GYPSUM) yield(RagiumBlocks.CREATIVE_BATTERY) // TODO diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index c06fbb589..d7fb08eea 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -696,16 +696,6 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu exp = 0.15f } - // Gypsum Dust - RagiumRecipeBuilders.crushing { - ingredient { - items { - +RagiumBlocks.GYPSUM - +RagiumBlocks.SMOOTH_GYPSUM - } - } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.GYPSUM) } - }.save(exporter) // CaSO4 -> CaO + SO3 RagiumRecipeBuilders.pyrolyzing { ingredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.GYPSUM) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 7dee13191..0f988d96f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -282,16 +282,6 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut private fun decoration() { RagiumBlocks.ALL_DECORATIONS.forEach(::registerDecoration) - // Smooth Gypsum - VanillaRecipeBuilders.shaped { - +"AA" - +"AA" - define('A') { items { +RagiumBlocks.GYPSUM } } - result { - +RagiumBlocks.SMOOTH_GYPSUM - count = 4 - } - }.save(exporter) // Quartz Glass Pane VanillaRecipeBuilders.shaped { +"AAA" diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum.json b/src/generated/resources/assets/ragium/blockstates/gypsum.json deleted file mode 100644 index f5ca2be3c..000000000 --- a/src/generated/resources/assets/ragium/blockstates/gypsum.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "ragium:block/gypsum" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json b/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json deleted file mode 100644 index 1c6dd22a9..000000000 --- a/src/generated/resources/assets/ragium/blockstates/gypsum_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=bottom": { - "model": "ragium:block/gypsum_slab" - }, - "type=double": { - "model": "ragium:block/gypsum" - }, - "type=top": { - "model": "ragium:block/gypsum_slab_top" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json b/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json deleted file mode 100644 index f6b942882..000000000 --- a/src/generated/resources/assets/ragium/blockstates/gypsum_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "ragium:block/gypsum_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "ragium:block/gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "ragium:block/gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "ragium:block/gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json b/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json deleted file mode 100644 index 8343904a7..000000000 --- a/src/generated/resources/assets/ragium/blockstates/gypsum_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "ragium:block/gypsum_wall_post" - }, - "when": { - "up": "true" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side", - "uvlock": true - }, - "when": { - "north": "low" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "low" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "low" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side_tall", - "uvlock": true - }, - "when": { - "north": "tall" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side_tall", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "tall" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side_tall", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "tall" - } - }, - { - "apply": { - "model": "ragium:block/gypsum_wall_side_tall", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "tall" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json deleted file mode 100644 index b5577eb71..000000000 --- a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "ragium:block/smooth_gypsum" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json deleted file mode 100644 index f214e6def..000000000 --- a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=bottom": { - "model": "ragium:block/smooth_gypsum_slab" - }, - "type=double": { - "model": "ragium:block/smooth_gypsum" - }, - "type=top": { - "model": "ragium:block/smooth_gypsum_slab_top" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json deleted file mode 100644 index 8c0ce804e..000000000 --- a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "ragium:block/smooth_gypsum_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "ragium:block/smooth_gypsum_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "ragium:block/smooth_gypsum_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json b/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json deleted file mode 100644 index b9b1ab5b1..000000000 --- a/src/generated/resources/assets/ragium/blockstates/smooth_gypsum_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_post" - }, - "when": { - "up": "true" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side", - "uvlock": true - }, - "when": { - "north": "low" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "low" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "low" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side_tall", - "uvlock": true - }, - "when": { - "north": "tall" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side_tall", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "tall" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side_tall", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "tall" - } - }, - { - "apply": { - "model": "ragium:block/smooth_gypsum_wall_side_tall", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "tall" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum.json b/src/generated/resources/assets/ragium/items/gypsum.json deleted file mode 100644 index dc23b7f86..000000000 --- a/src/generated/resources/assets/ragium/items/gypsum.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_slab.json b/src/generated/resources/assets/ragium/items/gypsum_slab.json deleted file mode 100644 index e8a0048d7..000000000 --- a/src/generated/resources/assets/ragium/items/gypsum_slab.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_stairs.json b/src/generated/resources/assets/ragium/items/gypsum_stairs.json deleted file mode 100644 index 9d2d413eb..000000000 --- a/src/generated/resources/assets/ragium/items/gypsum_stairs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/gypsum_wall.json b/src/generated/resources/assets/ragium/items/gypsum_wall.json deleted file mode 100644 index 8ac8c58c4..000000000 --- a/src/generated/resources/assets/ragium/items/gypsum_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/gypsum_wall_inventory" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum.json b/src/generated/resources/assets/ragium/items/smooth_gypsum.json deleted file mode 100644 index de2d6ed19..000000000 --- a/src/generated/resources/assets/ragium/items/smooth_gypsum.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json deleted file mode 100644 index 1321f5fe6..000000000 --- a/src/generated/resources/assets/ragium/items/smooth_gypsum_slab.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/smooth_gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json deleted file mode 100644 index f2a4bd9d9..000000000 --- a/src/generated/resources/assets/ragium/items/smooth_gypsum_stairs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/smooth_gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json b/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json deleted file mode 100644 index a2f31f3cc..000000000 --- a/src/generated/resources/assets/ragium/items/smooth_gypsum_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/smooth_gypsum_wall_inventory" - } -} \ 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 9c42f7091..da5fe520d 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -66,10 +66,6 @@ "block.ragium.fuel": "Fuel", "block.ragium.gray_dye": "Gray Dye", "block.ragium.green_dye": "Green Dye", - "block.ragium.gypsum": "Gypsum", - "block.ragium.gypsum_slab": "Gypsum Slab", - "block.ragium.gypsum_stairs": "Gypsum Stairs", - "block.ragium.gypsum_wall": "Gypsum Wall", "block.ragium.heat_machine_casing": "Machine Casing (Heat)", "block.ragium.honey": "Honey", "block.ragium.hydrochloric_acid": "Hydrochloric Acid", @@ -115,10 +111,6 @@ "block.ragium.salt_water": "Salt Water", "block.ragium.scanner": "Laser Scanner", "block.ragium.smelter": "Smelter", - "block.ragium.smooth_gypsum": "Smooth Gypsum", - "block.ragium.smooth_gypsum_slab": "Smooth Gypsum Slab", - "block.ragium.smooth_gypsum_stairs": "Smooth Gypsum Stairs", - "block.ragium.smooth_gypsum_wall": "Smooth Gypsum Wall", "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 3b32fb652..6fc5faf1e 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -66,10 +66,6 @@ "block.ragium.fuel": "燃料油", "block.ragium.gray_dye": "灰色の染料", "block.ragium.green_dye": "緑色の染料", - "block.ragium.gypsum": "石膏", - "block.ragium.gypsum_slab": "石膏のハーフブロック", - "block.ragium.gypsum_stairs": "石膏の階段", - "block.ragium.gypsum_wall": "石膏の壁", "block.ragium.heat_machine_casing": "機械筐体 (熱)", "block.ragium.honey": "ハチミツ", "block.ragium.hydrochloric_acid": "塩酸", @@ -115,10 +111,6 @@ "block.ragium.salt_water": "塩水", "block.ragium.scanner": "レーザースキャナ", "block.ragium.smelter": "製錬炉", - "block.ragium.smooth_gypsum": "滑らかな石膏", - "block.ragium.smooth_gypsum_slab": "滑らかな石膏のハーフブロック", - "block.ragium.smooth_gypsum_stairs": "滑らかな石膏の階段", - "block.ragium.smooth_gypsum_wall": "滑らかな石膏の壁", "block.ragium.sodium_hydroxide_solution": "水酸化ナトリウム水溶液", "block.ragium.sooty_iron_block": "煤鉄ブロック", "block.ragium.sulfur_dioxide": "二酸化硫黄", diff --git a/src/generated/resources/assets/ragium/models/block/gypsum.json b/src/generated/resources/assets/ragium/models/block/gypsum.json deleted file mode 100644 index 2734fdec1..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_slab.json b/src/generated/resources/assets/ragium/models/block/gypsum_slab.json deleted file mode 100644 index e5caf6a06..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "bottom": "ragium:block/gypsum", - "side": "ragium:block/gypsum", - "top": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json b/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json deleted file mode 100644 index 5ed64e26e..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "bottom": "ragium:block/gypsum", - "side": "ragium:block/gypsum", - "top": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json deleted file mode 100644 index 137979c75..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "bottom": "ragium:block/gypsum", - "side": "ragium:block/gypsum", - "top": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json deleted file mode 100644 index c2946ed86..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "bottom": "ragium:block/gypsum", - "side": "ragium:block/gypsum", - "top": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json b/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json deleted file mode 100644 index 8f2018675..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "bottom": "ragium:block/gypsum", - "side": "ragium:block/gypsum", - "top": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json deleted file mode 100644 index 121dbd9fc..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_wall_inventory.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json deleted file mode 100644 index f5c23751f..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json deleted file mode 100644 index d0b60066f..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json deleted file mode 100644 index f5e2c3230..000000000 --- a/src/generated/resources/assets/ragium/models/block/gypsum_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "ragium:block/gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json deleted file mode 100644 index a4196a093..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json deleted file mode 100644 index fd18614b5..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "bottom": "ragium:block/smooth_gypsum", - "side": "ragium:block/smooth_gypsum", - "top": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json deleted file mode 100644 index a55044ca8..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "bottom": "ragium:block/smooth_gypsum", - "side": "ragium:block/smooth_gypsum", - "top": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json deleted file mode 100644 index e95fcb6d0..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "bottom": "ragium:block/smooth_gypsum", - "side": "ragium:block/smooth_gypsum", - "top": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json deleted file mode 100644 index ab638cc92..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "bottom": "ragium:block/smooth_gypsum", - "side": "ragium:block/smooth_gypsum", - "top": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json deleted file mode 100644 index 003d0d9b3..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "bottom": "ragium:block/smooth_gypsum", - "side": "ragium:block/smooth_gypsum", - "top": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json deleted file mode 100644 index 965a49fe6..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_inventory.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json deleted file mode 100644 index 490f624e7..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json deleted file mode 100644 index 1f65deeca..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "ragium:block/smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json deleted file mode 100644 index 5d559fbc4..000000000 --- a/src/generated/resources/assets/ragium/models/block/smooth_gypsum_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "ragium:block/smooth_gypsum" - } -} \ 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 aad41554e..6c14f71c3 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -33,10 +33,6 @@ "ragium:fluorite_stairs", "ragium:fluorite_wall", "ragium:freezer", - "ragium:gypsum", - "ragium:gypsum_slab", - "ragium:gypsum_stairs", - "ragium:gypsum_wall", "ragium:heat_machine_casing", "ragium:machine_casing", "ragium:mechanical_machine_casing", @@ -55,10 +51,6 @@ "ragium:refinery", "ragium:scanner", "ragium:smelter", - "ragium:smooth_gypsum", - "ragium:smooth_gypsum_slab", - "ragium:smooth_gypsum_stairs", - "ragium:smooth_gypsum_wall", "ragium:sooty_iron_block", "ragium:sulfur_ore", "ragium:tank", diff --git a/src/generated/resources/data/minecraft/tags/block/slabs.json b/src/generated/resources/data/minecraft/tags/block/slabs.json index 33495f24c..189401999 100644 --- a/src/generated/resources/data/minecraft/tags/block/slabs.json +++ b/src/generated/resources/data/minecraft/tags/block/slabs.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_slab", - "ragium:fluorite_slab", - "ragium:gypsum_slab", - "ragium:smooth_gypsum_slab" + "ragium:fluorite_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/stairs.json b/src/generated/resources/data/minecraft/tags/block/stairs.json index dcc560227..fe730d506 100644 --- a/src/generated/resources/data/minecraft/tags/block/stairs.json +++ b/src/generated/resources/data/minecraft/tags/block/stairs.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_stairs", - "ragium:fluorite_stairs", - "ragium:gypsum_stairs", - "ragium:smooth_gypsum_stairs" + "ragium:fluorite_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/walls.json b/src/generated/resources/data/minecraft/tags/block/walls.json index af9d684cd..3a9b4eacf 100644 --- a/src/generated/resources/data/minecraft/tags/block/walls.json +++ b/src/generated/resources/data/minecraft/tags/block/walls.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_wall", - "ragium:fluorite_wall", - "ragium:gypsum_wall", - "ragium:smooth_gypsum_wall" + "ragium:fluorite_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/slabs.json b/src/generated/resources/data/minecraft/tags/item/slabs.json index 33495f24c..189401999 100644 --- a/src/generated/resources/data/minecraft/tags/item/slabs.json +++ b/src/generated/resources/data/minecraft/tags/item/slabs.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_slab", - "ragium:fluorite_slab", - "ragium:gypsum_slab", - "ragium:smooth_gypsum_slab" + "ragium:fluorite_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/stairs.json b/src/generated/resources/data/minecraft/tags/item/stairs.json index dcc560227..fe730d506 100644 --- a/src/generated/resources/data/minecraft/tags/item/stairs.json +++ b/src/generated/resources/data/minecraft/tags/item/stairs.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_stairs", - "ragium:fluorite_stairs", - "ragium:gypsum_stairs", - "ragium:smooth_gypsum_stairs" + "ragium:fluorite_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/walls.json b/src/generated/resources/data/minecraft/tags/item/walls.json index af9d684cd..3a9b4eacf 100644 --- a/src/generated/resources/data/minecraft/tags/item/walls.json +++ b/src/generated/resources/data/minecraft/tags/item/walls.json @@ -1,8 +1,6 @@ { "values": [ "ragium:cryolite_wall", - "ragium:fluorite_wall", - "ragium:gypsum_wall", - "ragium:smooth_gypsum_wall" + "ragium:fluorite_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json deleted file mode 100644 index 6601b4dec..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/gypsum.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:gypsum" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/gypsum" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json deleted file mode 100644 index b0d1836af..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_slab.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "conditions": [ - { - "block": "ragium:gypsum_slab", - "condition": "minecraft:block_state_property", - "properties": { - "type": "double" - } - } - ], - "count": 2.0, - "function": "minecraft:set_count" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:gypsum_slab" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/gypsum_slab" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json deleted file mode 100644 index 796d0f678..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_stairs.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:gypsum_stairs" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/gypsum_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json deleted file mode 100644 index 81b8fd3b3..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/gypsum_wall.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:gypsum_wall" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/gypsum_wall" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json deleted file mode 100644 index b4264023b..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:smooth_gypsum" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/smooth_gypsum" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json deleted file mode 100644 index 753b275ea..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_slab.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "conditions": [ - { - "block": "ragium:smooth_gypsum_slab", - "condition": "minecraft:block_state_property", - "properties": { - "type": "double" - } - } - ], - "count": 2.0, - "function": "minecraft:set_count" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:smooth_gypsum_slab" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/smooth_gypsum_slab" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json deleted file mode 100644 index bb3b45001..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_stairs.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:smooth_gypsum_stairs" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/smooth_gypsum_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json deleted file mode 100644 index b306a3bb6..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/smooth_gypsum_wall.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:smooth_gypsum_wall" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/smooth_gypsum_wall" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json b/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json deleted file mode 100644 index af4b457cb..000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/gypsum_dust.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": [ - "ragium:gypsum", - "ragium:smooth_gypsum" - ] - }, - "result": { - "count": 1, - "id": "ragium:gypsum_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json deleted file mode 100644 index f94f85706..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/gypsum_slab.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "gypsum_slab", - "key": { - "A": "ragium:gypsum" - }, - "pattern": [ - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json deleted file mode 100644 index ee54d9589..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/gypsum_stairs.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "gypsum_stairs", - "key": { - "A": "ragium:gypsum" - }, - "pattern": [ - "A ", - "AA ", - "AAA" - ], - "result": { - "count": 4, - "id": "ragium:gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json b/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json deleted file mode 100644 index b67d5cc7a..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/gypsum_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "gypsum_wall", - "key": { - "A": "ragium:gypsum" - }, - "pattern": [ - "AAA", - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:gypsum_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json deleted file mode 100644 index b98151013..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": "ragium:gypsum" - }, - "pattern": [ - "AA", - "AA" - ], - "result": { - "count": 4, - "id": "ragium:smooth_gypsum" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json deleted file mode 100644 index bf520e1a5..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_slab.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "smooth_gypsum_slab", - "key": { - "A": "ragium:smooth_gypsum" - }, - "pattern": [ - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:smooth_gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json deleted file mode 100644 index 2ea276d6f..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_stairs.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "smooth_gypsum_stairs", - "key": { - "A": "ragium:smooth_gypsum" - }, - "pattern": [ - "A ", - "AA ", - "AAA" - ], - "result": { - "count": 4, - "id": "ragium:smooth_gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json deleted file mode 100644 index f84282f6c..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/smooth_gypsum_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "smooth_gypsum_wall", - "key": { - "A": "ragium:smooth_gypsum" - }, - "pattern": [ - "AAA", - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:smooth_gypsum_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json deleted file mode 100644 index 931d7b26e..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:gypsum", - "result": { - "count": 2, - "id": "ragium:gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json deleted file mode 100644 index e68e6ae7c..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_stairs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:gypsum", - "result": { - "id": "ragium:gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json deleted file mode 100644 index dedd70e5a..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/gypsum_wall.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:gypsum", - "result": { - "id": "ragium:gypsum_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json deleted file mode 100644 index 7f19da183..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_slab.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": [ - "ragium:smooth_gypsum", - "ragium:gypsum" - ], - "result": { - "count": 2, - "id": "ragium:smooth_gypsum_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json deleted file mode 100644 index 53dac7f7d..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_stairs.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": [ - "ragium:smooth_gypsum", - "ragium:gypsum" - ], - "result": { - "id": "ragium:smooth_gypsum_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json deleted file mode 100644 index a92d49dea..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/smooth_gypsum_wall.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": [ - "ragium:smooth_gypsum", - "ragium:gypsum" - ], - "result": { - "id": "ragium:smooth_gypsum_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 195d44278..dada2370c 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -42,10 +42,6 @@ "fuel", "gray_dye", "green_dye", - "gypsum", - "gypsum_slab", - "gypsum_stairs", - "gypsum_wall", "heat_machine_casing", "honey", "hydrochloric_acid", @@ -80,10 +76,6 @@ "salt_water", "scanner", "smelter", - "smooth_gypsum", - "smooth_gypsum_slab", - "smooth_gypsum_stairs", - "smooth_gypsum_wall", "sodium_hydroxide_solution", "sooty_iron_block", "sulfur_ore", @@ -303,11 +295,7 @@ "gold_gear", "gray_dye_bucket", "green_dye_bucket", - "gypsum", "gypsum_dust", - "gypsum_slab", - "gypsum_stairs", - "gypsum_wall", "heat_machine_casing", "heat_machine_parts", "honey_bucket", @@ -380,10 +368,6 @@ "silicon_dust", "silicon_wafer", "smelter", - "smooth_gypsum", - "smooth_gypsum_slab", - "smooth_gypsum_stairs", - "smooth_gypsum_wall", "sodium_carbonate_dust", "sodium_hydroxide_solution_bucket", "sooty_iron_axe", diff --git a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt index 6939642f1..fbca13f4f 100644 --- a/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt +++ b/src/lib/kotlin/hiiragi283/lib/registry/HTDeferredHolder.kt @@ -4,8 +4,6 @@ import hiiragi283.lib.resource.HTValueWithKey import hiiragi283.lib.resource.toLanguageKey import hiiragi283.lib.text.HTHasText import hiiragi283.lib.util.Either -import hiiragi283.lib.util.Ior -import hiiragi283.lib.util.toIor import net.minecraft.core.TypedInstance import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey @@ -45,7 +43,12 @@ open class HTDeferredHolder : else -> Either.Left("Trying to access unbound value: $key") } - final override fun unwrapWithKey(): Ior, T> = asOptional().toIor { this.key } + final override val keyOrNull: ResourceKey get() = this.key + + final override fun getOrNull(): T? = when (this.isBound) { + true -> get() + false -> null + } /** * @param R レジストリの要素のクラス diff --git a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt b/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt index 8adc155f1..edec5195c 100644 --- a/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt +++ b/src/lib/kotlin/hiiragi283/lib/resource/HTValueWithKey.kt @@ -1,6 +1,5 @@ package hiiragi283.lib.resource -import hiiragi283.lib.util.Ior import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey @@ -19,16 +18,11 @@ typealias HTSimpleValueWithKey = HTValueWithKey * @author Hiiragi Tsubasa * @since 26.1.2 */ -fun interface HTValueWithKey { - /** - * 保持している値を[Ior]に変換します。 - */ - fun unwrapWithKey(): Ior, T> - +interface HTValueWithKey { /** * [ID][ResourceKey]を取得します。 */ - val keyOrNull: ResourceKey? get() = unwrapWithKey().getLeft() + val keyOrNull: ResourceKey? /** * [ID][ResourceKey]を取得します。 @@ -50,7 +44,7 @@ fun interface HTValueWithKey { /** * 値を取得します。 */ - fun getOrNull(): T? = unwrapWithKey().getRight() + fun getOrNull(): T? /** * 値を取得します。 diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index eb597c082..7efd56b72 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -222,36 +222,6 @@ data object RagiumBlocks { CRYOLITE_BLOCK ) - // Gypsum - @JvmField - val GYPSUM: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( - "gypsum", - copyOf(Blocks.TUFF).mapColor(MapColor.TERRACOTTA_PINK) - // itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } - ) - - @JvmField - val GYPSUM_DECORATION: HTDecorationContent = HTDecorationContent.create( - REGISTER, - RagiumMaterial.Mineral.GYPSUM.materialName, - GYPSUM - ) - - @JvmField - val SMOOTH_GYPSUM: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( - "smooth_gypsum", - copyOf(Blocks.TUFF).mapColor(MapColor.TERRACOTTA_PINK) - // itemProp = { it.delayedHolderComponent(RagiumDataComponents.CHEMICAL, RagiumChemicals.CRYOLITE) } - ) - - @JvmField - val SMOOTH_GYPSUM_DECORATION: HTDecorationContent = HTDecorationContent.create( - REGISTER, - "smooth_gypsum", - SMOOTH_GYPSUM, - parent = { GYPSUM_DECORATION } - ) - // Glass @JvmField val QUARTZ_GLASS: HTBasicDeferredBlockAndItem = @@ -265,9 +235,7 @@ data object RagiumBlocks { @JvmField val ALL_DECORATIONS: List = listOf( FLUORITE_DECORATION, - CRYOLITE_DECORATION, - GYPSUM_DECORATION, - SMOOTH_GYPSUM_DECORATION + CRYOLITE_DECORATION ) // Machine // From 277bf048bf01396c5fdc3947ca0ac00db745097a Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 4 Oct 2026 21:18:02 +0900 Subject: [PATCH 38/38] =?UTF-8?q?feat!:=20=E6=B7=B7=E4=B9=B1=E3=81=AE?= =?UTF-8?q?=E5=85=83=E3=81=A8=E3=81=AA=E3=81=A3=E3=81=9F=E3=82=A2=E3=83=AB?= =?UTF-8?q?=E3=83=9F=E5=91=A8=E3=82=8A=E3=82=92=E3=81=84=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=82=93=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/widget/HTFluidWidgetRenderer.kt | 59 ++--- .../data/lang/RagiumEnglishLangProvider.kt | 2 +- .../data/lang/RagiumJapaneseLangProvider.kt | 2 +- .../ragium/data/lang/RagiumLangProvider.kt | 4 +- .../ragium/data/model/RagiumModelProvider.kt | 2 +- .../recipe/RagiumChemicalRecipeProvider.kt | 16 +- .../data/recipe/RagiumCommonRecipeProvider.kt | 12 +- .../recipe/RagiumMechanicalRecipeProvider.kt | 4 +- .../recipe/RagiumVanillaRecipeProvider.kt | 4 +- .../ragium/blockstates/cryolite_block.json | 7 - .../ragium/blockstates/cryolite_slab.json | 13 -- .../ragium/blockstates/cryolite_stairs.json | 209 ------------------ .../ragium/blockstates/cryolite_wall.json | 90 -------- .../ragium/items/aluminum_fluoride_dust.json | 6 - .../assets/ragium/items/cryolite.json | 6 - .../assets/ragium/items/cryolite_block.json | 6 - .../assets/ragium/items/cryolite_dust.json | 6 - .../assets/ragium/items/cryolite_slab.json | 6 - .../assets/ragium/items/cryolite_stairs.json | 6 - .../assets/ragium/items/cryolite_wall.json | 6 - .../{alclad_plate.json => soda_ash_dust.json} | 2 +- .../ragium/items/sodium_carbonate_dust.json | 6 - .../resources/assets/ragium/lang/en_us.json | 10 +- .../resources/assets/ragium/lang/ja_jp.json | 10 +- .../ragium/models/block/cryolite_block.json | 6 - .../ragium/models/block/cryolite_slab.json | 8 - .../models/block/cryolite_slab_top.json | 8 - .../ragium/models/block/cryolite_stairs.json | 8 - .../models/block/cryolite_stairs_inner.json | 8 - .../models/block/cryolite_stairs_outer.json | 8 - .../models/block/cryolite_wall_inventory.json | 6 - .../models/block/cryolite_wall_post.json | 6 - .../models/block/cryolite_wall_side.json | 6 - .../models/block/cryolite_wall_side_tall.json | 6 - .../ragium/models/item/alclad_plate.json | 6 - .../models/item/aluminum_fluoride_dust.json | 6 - .../assets/ragium/models/item/cryolite.json | 6 - ...{cryolite_dust.json => soda_ash_dust.json} | 2 +- .../models/item/sodium_carbonate_dust.json | 6 - .../resources/data/c/tags/item/dusts.json | 4 +- .../c/tags/item/dusts/aluminum_fluoride.json | 5 - .../data/c/tags/item/dusts/cryolite.json | 5 - .../data/c/tags/item/dusts/soda_ash.json | 5 + .../c/tags/item/dusts/sodium_carbonate.json | 5 - .../resources/data/c/tags/item/gems.json | 1 - .../data/c/tags/item/gems/cryolite.json | 5 - .../tags/block/mineable/pickaxe.json | 4 - .../data/minecraft/tags/block/slabs.json | 1 - .../data/minecraft/tags/block/stairs.json | 1 - .../data/minecraft/tags/block/walls.json | 1 - .../tags/item/beacon_payment_items.json | 1 - .../data/minecraft/tags/item/slabs.json | 1 - .../data/minecraft/tags/item/stairs.json | 1 - .../data/minecraft/tags/item/walls.json | 1 - .../loot_table/blocks/cryolite_block.json | 21 -- .../loot_table/blocks/cryolite_slab.json | 35 --- .../loot_table/blocks/cryolite_stairs.json | 21 -- .../loot_table/blocks/cryolite_wall.json | 21 -- .../recipe/alloying/aluminum_ingot.json | 16 -- .../aluminum_ingot_with_cryolite.json | 28 --- .../ragium/recipe/alloying/cryolite_dust.json | 16 -- .../data/ragium/recipe/alloying/glass.json | 2 +- .../recipe/assembling/alclad_plate.json | 16 -- ...carbonate_dust.json => soda_ash_dust.json} | 2 +- .../data/ragium/recipe/crushing/cryolite.json | 12 - .../crushing/cryolite_dust_from_gem.json | 12 - .../recipe/mixing/alumina_solution.json | 16 -- .../reacting/aluminum_fluoride_dust.json | 20 -- .../recipe/refining/alumina_solution.json | 16 -- .../refining/sodium_hydroxide_solution.json | 2 +- .../ragium/recipe/shaped/cryolite_block.json | 15 -- .../ragium/recipe/shaped/cryolite_slab.json | 15 -- .../ragium/recipe/shaped/cryolite_stairs.json | 17 -- .../ragium/recipe/shaped/cryolite_wall.json | 16 -- .../ragium/recipe/shaped/electrolyzer.json | 2 +- .../recipe/shaped/precision_assembler.json | 2 +- ...carbonate_dust.json => soda_ash_dust.json} | 2 +- .../recipe/stonecutting/cryolite_slab.json | 8 - .../recipe/stonecutting/cryolite_stairs.json | 7 - .../recipe/stonecutting/cryolite_wall.json | 7 - ...d_ice.json => alumina_dust_from_clay.json} | 12 +- .../resources/reports/ragium/registries.json | 14 +- .../hiiragi283/ragium/api/RagiumConfig.kt | 6 +- .../ragium/api/material/RagiumMaterial.kt | 14 +- .../lib/integration/jei/HTJeiRecipeType.kt | 6 +- .../ragium/common/block/RagiumBlocks.kt | 8 +- .../ragium/common/item/RagiumItems.kt | 5 +- ...m_carbonate_dust.png => soda_ash_dust.png} | Bin 88 files changed, 86 insertions(+), 957 deletions(-) delete mode 100644 src/generated/resources/assets/ragium/blockstates/cryolite_block.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/cryolite_slab.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/cryolite_stairs.json delete mode 100644 src/generated/resources/assets/ragium/blockstates/cryolite_wall.json delete mode 100644 src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite_block.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite_dust.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite_slab.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite_stairs.json delete mode 100644 src/generated/resources/assets/ragium/items/cryolite_wall.json rename src/generated/resources/assets/ragium/items/{alclad_plate.json => soda_ash_dust.json} (55%) delete mode 100644 src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_block.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_slab.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_slab_top.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_stairs.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_stairs_inner.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_stairs_outer.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json delete mode 100644 src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json delete mode 100644 src/generated/resources/assets/ragium/models/item/alclad_plate.json delete mode 100644 src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json delete mode 100644 src/generated/resources/assets/ragium/models/item/cryolite.json rename src/generated/resources/assets/ragium/models/item/{cryolite_dust.json => soda_ash_dust.json} (60%) delete mode 100644 src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json delete mode 100644 src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json delete mode 100644 src/generated/resources/data/c/tags/item/dusts/cryolite.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/soda_ash.json delete mode 100644 src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json delete mode 100644 src/generated/resources/data/c/tags/item/gems/cryolite.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/cryolite_block.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/cryolite_slab.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/cryolite_stairs.json delete mode 100644 src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot_with_cryolite.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json delete mode 100644 src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json rename src/generated/resources/data/ragium/recipe/blasting/{sodium_carbonate_dust.json => soda_ash_dust.json} (79%) delete mode 100644 src/generated/resources/data/ragium/recipe/crushing/cryolite.json delete mode 100644 src/generated/resources/data/ragium/recipe/crushing/cryolite_dust_from_gem.json delete mode 100644 src/generated/resources/data/ragium/recipe/mixing/alumina_solution.json delete mode 100644 src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json delete mode 100644 src/generated/resources/data/ragium/recipe/refining/alumina_solution.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/cryolite_block.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/cryolite_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/cryolite_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json rename src/generated/resources/data/ragium/recipe/smelting/{sodium_carbonate_dust.json => soda_ash_dust.json} (79%) delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/cryolite_slab.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/cryolite_stairs.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json rename src/generated/resources/data/ragium/recipe/washing/{packed_ice.json => alumina_dust_from_clay.json} (51%) rename src/main/resources/assets/ragium/textures/item/{sodium_carbonate_dust.png => soda_ash_dust.png} (100%) diff --git a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt index fae8ed785..20cb0358b 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/gui/widget/HTFluidWidgetRenderer.kt @@ -3,54 +3,39 @@ package hiiragi283.ragium.client.gui.widget import hiiragi283.lib.gui.HTBounds import hiiragi283.lib.gui.HTGuiAccess import hiiragi283.lib.gui.HTGuiRenderHelper -import hiiragi283.lib.gui.widget.HTAbstractWidgetRenderer import hiiragi283.lib.text.Text import hiiragi283.lib.transfer.fluid.getFluidStack import hiiragi283.ragium.api.util.HTStorageHelper import hiiragi283.ragium.client.util.HTSpriteRenderHelper import hiiragi283.ragium.common.gui.widget.HTFluidWidget -import net.minecraft.client.Minecraft import net.minecraft.client.gui.GuiGraphicsExtractor +import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.resources.Identifier +import net.minecraft.world.item.Item +import net.minecraft.world.item.TooltipFlag +import java.util.function.Consumer class HTFluidWidgetRenderer(gui: HTGuiAccess, widget: HTFluidWidget) : - HTAbstractWidgetRenderer(gui, widget) { - override fun render( - bounds: HTBounds, - graphics: GuiGraphicsExtractor, - mouseX: Int, - mouseY: Int, - partialTick: Float - ) { - // Render background - val background: Identifier = when (widget) { + HTSpriteWidgetRenderer(gui, widget) { + override fun renderBackground(bounds: HTBounds, graphics: GuiGraphicsExtractor) { + val texture: Identifier = when (widget) { is HTFluidWidget.Slot -> widget.backgroundType.slotTexture is HTFluidWidget.Tank -> widget.backgroundType.tankTexture } - HTSpriteRenderHelper.blit(graphics, background, bounds) - // Render sprite - var (x: Int, y: Int, width: Int, height: Int) = bounds - x++ - y++ - width -= 2 - height -= 2 - HTGuiRenderHelper.renderFluid(graphics, widget.getFluidStack(), x, y, width, height) - // Render tooltip - if (bounds.contains(mouseX, mouseY)) { - graphics.setTooltipForNextFrame( - Minecraft.getInstance().font, - buildList { - HTStorageHelper.addFluidTooltip( - widget.getFluidStack(), - { text: Text -> this.add(text.visualOrderText) }, - HTGuiRenderHelper.getTooltipContext(), - HTGuiRenderHelper.getTooltipFlag(), - false - ) - }, - mouseX, - mouseY - ) - } + HTSpriteRenderHelper.blit(graphics, texture, bounds) + } + + override fun shouldRender(): Boolean = !widget.isEmpty + + override fun getSpriteAndColor(): Pair? = + HTGuiRenderHelper.getSpriteAndColor(widget.getFluidStack()) + + override fun getLevel(): Float = when (widget) { + is HTFluidWidget.Slot -> 1f + is HTFluidWidget.Tank -> widget.currentFilledLevel + }.coerceAtMost(1f) + + override fun collectTooltips(consumer: Consumer, context: Item.TooltipContext, flag: TooltipFlag) { + HTStorageHelper.addFluidTooltip(widget.getFluidStack(), consumer, context, flag, false) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index ba3899442..32fb57f3a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -132,7 +132,7 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FIBER, "Synthetic Fiber") add(RagiumItems.CARBON_FIBER, "Carbon Fiber") add(RagiumItems.CFRP_PLATE, "CFRP Plate") - add(RagiumItems.ALCLAD_PLATE, "Alclad Plate") + // add(RagiumItems.ALCLAD_PLATE, "Alclad Plate") add(RagiumItems.BEESWAX, "Beeswax") add(RagiumItems.SPLASH_BOTTLE, "Splash Bottle") add(RagiumItems.LINGERING_BOTTLE, "Lingering Bottle") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index b56336206..7e084e874 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -128,7 +128,7 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.SYNTHETIC_FIBER, "合成繊維") add(RagiumItems.CARBON_FIBER, "炭素繊維") add(RagiumItems.CFRP_PLATE, "炭素繊維強化プラスチック板") - add(RagiumItems.ALCLAD_PLATE, "アルクラッド板") + // add(RagiumItems.ALCLAD_PLATE, "アルクラッド板") add(RagiumItems.BEESWAX, "密猟") add(RagiumItems.SPLASH_BOTTLE, "スプラッシュ瓶") add(RagiumItems.LINGERING_BOTTLE, "残留瓶") diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt index 44c82e8e0..31cd484f3 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumLangProvider.kt @@ -30,8 +30,8 @@ interface RagiumLangProvider { provider.add(RagiumBlocks.ECHO_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.ECHO) provider.add(RagiumBlocks.FLUORITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.FLUORITE) provider.addDecoration(RagiumBlocks.FLUORITE_DECORATION, RagiumMaterial.Gem.FLUORITE) - provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) - provider.addDecoration(RagiumBlocks.CRYOLITE_DECORATION, RagiumMaterial.Gem.CRYOLITE) + // provider.add(RagiumBlocks.CRYOLITE_BLOCK, HTStorageBlockPart.DEFAULT, RagiumMaterial.Gem.CRYOLITE) + // provider.addDecoration(RagiumBlocks.CRYOLITE_DECORATION, RagiumMaterial.Gem.CRYOLITE) val casingPattern = HTLangPatternProvider("Machine Casing (%s)", "機械筐体 (%s)") for ((machineType: HTLangName, casing: HTHasTranslationKey) in RagiumBlocks.MACHINE_CASINGS) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt index 3e7fa5536..e5a14a8ae 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/model/RagiumModelProvider.kt @@ -68,7 +68,7 @@ class RagiumModelProvider(output: PackOutput) : HTModelProvider(output, RagiumAP yieldAll(RagiumBlocks.MATERIAL_BLOCKS.values) yield(RagiumBlocks.ECHO_BLOCK) yield(RagiumBlocks.FLUORITE_BLOCK) - yield(RagiumBlocks.CRYOLITE_BLOCK) + // yield(RagiumBlocks.CRYOLITE_BLOCK) yield(RagiumBlocks.CREATIVE_BATTERY) // TODO diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index dbae10fcd..5af9d02f6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -106,15 +106,19 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.BAUXITE) } recipeId suffix "_from_red_sands" }.save(exporter) - // Blue Ice + HF (aq) -> Packed Ice + Cryolite + // Clay + Water -> Al2O3 + SiO2 RagiumRecipeBuilders.washing { - itemIngredient { items { +Items.BLUE_ICE } } - fluidIngredient { +holderSet(RagiumFluids.HYDROFLUORIC_ACID) } + itemIngredient { items { +Items.CLAY } } + fluidIngredient { +waterSet() } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.ALUMINA) + count = 2 + } result { - +Items.PACKED_ICE - count = 6 + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 2 } - result { +RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) } + recipeId suffix "_from_clay" }.save(exporter) // Ancient Debris -> Netherite Scrap diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index d7fb08eea..fa234aa16 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -271,7 +271,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu fluorine() sodium() - aluminum() + // aluminum() silica() sulfur() chlorine() @@ -395,7 +395,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Dried Kelp -> Na2CO3 VanillaRecipeBuilders.smeltingAndBlasting(exporter) { ingredient { items { +Items.DRIED_KELP } } - result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODA_ASH) } exp = 0.15f } // 2x NaOH (aq) + CO2 -> Na2CO3 + H2O @@ -405,7 +405,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu water() amount *= 2 } - itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + itemResult { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.SODA_ASH) } recipeId replace RagiumFluids.NAOH_SOLUTION.idOrThrow }.save(exporter) // SiO2 + Na2CO3 -> Glass @@ -414,7 +414,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Gem.QUARTZ) count = 2 } - extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SODIUM_CARBONATE) } + extra { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Chemicals.SODA_ASH) } result { +Items.GLASS count = 6 @@ -443,7 +443,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu }.save(exporter) } - private fun aluminum() { + /*private fun aluminum() { // Bauxite + NaOH aq -> Al(OH)3 (aq) RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.BAUXITE) } @@ -514,7 +514,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu count = 4 } }.save(exporter) - } + }*/ private fun silica() { // Glass -> Molten Glass diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 4cc1b968f..5dec41afc 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -436,8 +436,8 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable Items.PURPUR_BLOCK to Items.POPPED_CHORUS_FRUIT, Items.SNOW_BLOCK to Items.SNOWBALL, RagiumBlocks.ECHO_BLOCK to Items.ECHO_SHARD, - RagiumBlocks.FLUORITE_BLOCK to RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.FLUORITE), - RagiumBlocks.CRYOLITE_BLOCK to RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) + RagiumBlocks.FLUORITE_BLOCK to RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.FLUORITE) + // RagiumBlocks.CRYOLITE_BLOCK to RagiumItems.getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CRYOLITE) ).forEach { (block: ItemLike, base: ItemLike) -> RagiumRecipeBuilders.crushing { ingredient { items { +block.asItem() } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index 0f988d96f..dbf23f4ee 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -486,7 +486,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut +"ABA" +"BCB" +"ADA" - define('A') { items { +RagiumItems.ALCLAD_PLATE } } + define('A') { +holderSet(CommonTagPrefixes.NUGGET, RagiumMaterial.Alloy.BLACK_STEEL) } define('B') { items { +RagiumItems.getParts(HTMachineType.ELECTRONICS) } } define('C') { +holderSet(CommonTagPrefixes.GEAR, RagiumMaterial.Gem.DIAMOND) } define('D', builderAction) @@ -547,7 +547,7 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut // XX <-> Storage Block gemBlock(RagiumMaterial.Gem.ECHO, RagiumBlocks.ECHO_BLOCK) gemBlock(RagiumMaterial.Gem.FLUORITE, RagiumBlocks.FLUORITE_BLOCK) - gemBlock(RagiumMaterial.Gem.CRYOLITE, RagiumBlocks.CRYOLITE_BLOCK) + // gemBlock(RagiumMaterial.Gem.CRYOLITE, RagiumBlocks.CRYOLITE_BLOCK) nineToBlock(RagiumMaterial.Metal.ALUMINUM, HTItemPart.INGOT) nineToBlock(RagiumMaterial.Alloy.SOOTY_IRON, HTItemPart.INGOT) diff --git a/src/generated/resources/assets/ragium/blockstates/cryolite_block.json b/src/generated/resources/assets/ragium/blockstates/cryolite_block.json deleted file mode 100644 index 401a31da5..000000000 --- a/src/generated/resources/assets/ragium/blockstates/cryolite_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "ragium:block/cryolite_block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/cryolite_slab.json b/src/generated/resources/assets/ragium/blockstates/cryolite_slab.json deleted file mode 100644 index 785eb3509..000000000 --- a/src/generated/resources/assets/ragium/blockstates/cryolite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=bottom": { - "model": "ragium:block/cryolite_slab" - }, - "type=double": { - "model": "ragium:block/cryolite_block" - }, - "type=top": { - "model": "ragium:block/cryolite_slab_top" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/cryolite_stairs.json b/src/generated/resources/assets/ragium/blockstates/cryolite_stairs.json deleted file mode 100644 index 2bf553464..000000000 --- a/src/generated/resources/assets/ragium/blockstates/cryolite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "ragium:block/cryolite_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "ragium:block/cryolite_stairs_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "ragium:block/cryolite_stairs_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "ragium:block/cryolite_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json b/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json deleted file mode 100644 index 885f743ed..000000000 --- a/src/generated/resources/assets/ragium/blockstates/cryolite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "ragium:block/cryolite_wall_post" - }, - "when": { - "up": "true" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side", - "uvlock": true - }, - "when": { - "north": "low" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "low" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "low" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side_tall", - "uvlock": true - }, - "when": { - "north": "tall" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side_tall", - "uvlock": true, - "y": 90 - }, - "when": { - "east": "tall" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side_tall", - "uvlock": true, - "y": 180 - }, - "when": { - "south": "tall" - } - }, - { - "apply": { - "model": "ragium:block/cryolite_wall_side_tall", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "tall" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json b/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json deleted file mode 100644 index 06b8b3836..000000000 --- a/src/generated/resources/assets/ragium/items/aluminum_fluoride_dust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:item/aluminum_fluoride_dust" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite.json b/src/generated/resources/assets/ragium/items/cryolite.json deleted file mode 100644 index e24430fe0..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:item/cryolite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_block.json b/src/generated/resources/assets/ragium/items/cryolite_block.json deleted file mode 100644 index db77e8f7d..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_dust.json b/src/generated/resources/assets/ragium/items/cryolite_dust.json deleted file mode 100644 index 6aea72d9b..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite_dust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:item/cryolite_dust" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_slab.json b/src/generated/resources/assets/ragium/items/cryolite_slab.json deleted file mode 100644 index 38ef6ed7a..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite_slab.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/cryolite_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_stairs.json b/src/generated/resources/assets/ragium/items/cryolite_stairs.json deleted file mode 100644 index 9aa78038b..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite_stairs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/cryolite_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/cryolite_wall.json b/src/generated/resources/assets/ragium/items/cryolite_wall.json deleted file mode 100644 index 0de1e5f7c..000000000 --- a/src/generated/resources/assets/ragium/items/cryolite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:block/cryolite_wall_inventory" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/alclad_plate.json b/src/generated/resources/assets/ragium/items/soda_ash_dust.json similarity index 55% rename from src/generated/resources/assets/ragium/items/alclad_plate.json rename to src/generated/resources/assets/ragium/items/soda_ash_dust.json index ed5d15f99..f1ba4092b 100644 --- a/src/generated/resources/assets/ragium/items/alclad_plate.json +++ b/src/generated/resources/assets/ragium/items/soda_ash_dust.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "ragium:item/alclad_plate" + "model": "ragium:item/soda_ash_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json deleted file mode 100644 index b3eba9dda..000000000 --- a/src/generated/resources/assets/ragium/items/sodium_carbonate_dust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "ragium:item/sodium_carbonate_dust" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index da5fe520d..ec2ad3396 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -45,10 +45,6 @@ "block.ragium.creative_tank": "Creative Tank", "block.ragium.crude_oil": "Crude Oil", "block.ragium.crusher": "Crusher", - "block.ragium.cryolite_block": "Block of Cryolite", - "block.ragium.cryolite_slab": "Cryolite Slab", - "block.ragium.cryolite_stairs": "Cryolite Stairs", - "block.ragium.cryolite_wall": "Cryolite Wall", "block.ragium.cutting_machine": "Cutting Machine", "block.ragium.cyan_dye": "Cyan Dye", "block.ragium.deepslate_niter_ore": "Deepslate Niter Ore", @@ -195,12 +191,10 @@ "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", "item.minecraft.tipped_arrow.effect.nausea": "Arrow of Nausea", "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", - "item.ragium.alclad_plate": "Alclad Plate", "item.ragium.alcohol_bucket": "Alcohol Bucket", "item.ragium.aldehyde_bucket": "Aldehyde Bucket", "item.ragium.alumina_dust": "Alumina Dust", "item.ragium.alumina_solution_bucket": "Alumina Solution Bucket", - "item.ragium.aluminum_fluoride_dust": "Aluminum Fluoride Dust", "item.ragium.aluminum_ingot": "Aluminum Ingot", "item.ragium.aluminum_nugget": "Aluminum Nugget", "item.ragium.amethyst_dust": "Amethyst Dust", @@ -233,8 +227,6 @@ "item.ragium.copper_gear": "Copper Gear", "item.ragium.crude_oil_bucket": "Crude Oil Bucket", "item.ragium.crude_silicon": "Crude Silicon", - "item.ragium.cryolite": "Cryolite", - "item.ragium.cryolite_dust": "Cryolite Dust", "item.ragium.cyan_dye_bucket": "Cyan Dye Bucket", "item.ragium.diamond_dust": "Diamond Dust", "item.ragium.diamond_gear": "Diamond Gear", @@ -307,7 +299,7 @@ "item.ragium.silicon_chip": "Silicon Chip", "item.ragium.silicon_dust": "Silicon Dust", "item.ragium.silicon_wafer": "Silicon Wafer", - "item.ragium.sodium_carbonate_dust": "Sodium Carbonate Dust", + "item.ragium.soda_ash_dust": "Soda Ash Dust", "item.ragium.sodium_hydroxide_solution_bucket": "Sodium Hydroxide Solution Bucket", "item.ragium.sooty_iron_axe": "Sooty Iron Axe", "item.ragium.sooty_iron_hoe": "Sooty Iron Hoe", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 6fc5faf1e..851b2f367 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -45,10 +45,6 @@ "block.ragium.creative_tank": "クリエイティブ用タンク", "block.ragium.crude_oil": "原油", "block.ragium.crusher": "破砕機", - "block.ragium.cryolite_block": "氷晶石ブロック", - "block.ragium.cryolite_slab": "氷晶石のハーフブロック", - "block.ragium.cryolite_stairs": "氷晶石の階段", - "block.ragium.cryolite_wall": "氷晶石の壁", "block.ragium.cutting_machine": "裁断機", "block.ragium.cyan_dye": "青緑色の染料", "block.ragium.deepslate_niter_ore": "深層硝石鉱石", @@ -195,12 +191,10 @@ "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", "item.minecraft.tipped_arrow.effect.nausea": "吐き気の矢", "item.minecraft.tipped_arrow.effect.wither": "衰退の矢", - "item.ragium.alclad_plate": "アルクラッド板", "item.ragium.alcohol_bucket": "アルコール入りバケツ", "item.ragium.aldehyde_bucket": "アルデヒド入りバケツ", "item.ragium.alumina_dust": "アルミナの粉", "item.ragium.alumina_solution_bucket": "アルミナ水溶液入りバケツ", - "item.ragium.aluminum_fluoride_dust": "フッ化アルミニウムの粉", "item.ragium.aluminum_ingot": "アルミニウムインゴット", "item.ragium.aluminum_nugget": "アルミニウムナゲット", "item.ragium.amethyst_dust": "アメジストの粉", @@ -233,8 +227,6 @@ "item.ragium.copper_gear": "銅の歯車", "item.ragium.crude_oil_bucket": "原油入りバケツ", "item.ragium.crude_silicon": "粗製シリコン", - "item.ragium.cryolite": "氷晶石", - "item.ragium.cryolite_dust": "氷晶石の粉", "item.ragium.cyan_dye_bucket": "青緑色の染料入りバケツ", "item.ragium.diamond_dust": "ダイヤモンドの粉", "item.ragium.diamond_gear": "ダイヤモンドの歯車", @@ -307,7 +299,7 @@ "item.ragium.silicon_chip": "シリコンチップ", "item.ragium.silicon_dust": "シリコンの粉", "item.ragium.silicon_wafer": "シリコンウェハ", - "item.ragium.sodium_carbonate_dust": "炭酸ナトリウムの粉", + "item.ragium.soda_ash_dust": "ソーダ灰の粉", "item.ragium.sodium_hydroxide_solution_bucket": "水酸化ナトリウム水溶液入りバケツ", "item.ragium.sooty_iron_axe": "煤鉄の斧", "item.ragium.sooty_iron_hoe": "煤鉄のクワ", diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_block.json b/src/generated/resources/assets/ragium/models/block/cryolite_block.json deleted file mode 100644 index 358c7a98f..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_slab.json b/src/generated/resources/assets/ragium/models/block/cryolite_slab.json deleted file mode 100644 index 483227ad3..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "bottom": "ragium:block/cryolite_block", - "side": "ragium:block/cryolite_block", - "top": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_slab_top.json b/src/generated/resources/assets/ragium/models/block/cryolite_slab_top.json deleted file mode 100644 index eb934758e..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "bottom": "ragium:block/cryolite_block", - "side": "ragium:block/cryolite_block", - "top": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_stairs.json b/src/generated/resources/assets/ragium/models/block/cryolite_stairs.json deleted file mode 100644 index 9e104411c..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "bottom": "ragium:block/cryolite_block", - "side": "ragium:block/cryolite_block", - "top": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_stairs_inner.json b/src/generated/resources/assets/ragium/models/block/cryolite_stairs_inner.json deleted file mode 100644 index 71fab6dd0..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "bottom": "ragium:block/cryolite_block", - "side": "ragium:block/cryolite_block", - "top": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_stairs_outer.json b/src/generated/resources/assets/ragium/models/block/cryolite_stairs_outer.json deleted file mode 100644 index c0925acb4..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "bottom": "ragium:block/cryolite_block", - "side": "ragium:block/cryolite_block", - "top": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json deleted file mode 100644 index ff38709f6..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_wall_inventory.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json deleted file mode 100644 index f7d0f36fa..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json deleted file mode 100644 index 62b3ae052..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json b/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json deleted file mode 100644 index 04265c2d9..000000000 --- a/src/generated/resources/assets/ragium/models/block/cryolite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "ragium:block/cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/alclad_plate.json b/src/generated/resources/assets/ragium/models/item/alclad_plate.json deleted file mode 100644 index 1bfef98d0..000000000 --- a/src/generated/resources/assets/ragium/models/item/alclad_plate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/alclad_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json b/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json deleted file mode 100644 index 0bcb4d9d0..000000000 --- a/src/generated/resources/assets/ragium/models/item/aluminum_fluoride_dust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/aluminum_fluoride_dust" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cryolite.json b/src/generated/resources/assets/ragium/models/item/cryolite.json deleted file mode 100644 index 9d1270c1c..000000000 --- a/src/generated/resources/assets/ragium/models/item/cryolite.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/cryolite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/cryolite_dust.json b/src/generated/resources/assets/ragium/models/item/soda_ash_dust.json similarity index 60% rename from src/generated/resources/assets/ragium/models/item/cryolite_dust.json rename to src/generated/resources/assets/ragium/models/item/soda_ash_dust.json index 7a664a22f..0c1a2d30c 100644 --- a/src/generated/resources/assets/ragium/models/item/cryolite_dust.json +++ b/src/generated/resources/assets/ragium/models/item/soda_ash_dust.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "ragium:item/cryolite_dust" + "layer0": "ragium:item/soda_ash_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json b/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json deleted file mode 100644 index f1e838bbe..000000000 --- a/src/generated/resources/assets/ragium/models/item/sodium_carbonate_dust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "ragium:item/sodium_carbonate_dust" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index be617731a..f5010ba9a 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -1,7 +1,6 @@ { "values": [ "#c:dusts/alumina", - "#c:dusts/aluminum_fluoride", "#c:dusts/amethyst", "#c:dusts/bauxite", "#c:dusts/borax", @@ -9,7 +8,6 @@ "#c:dusts/charcoal", "#c:dusts/coal", "#c:dusts/copper", - "#c:dusts/cryolite", "#c:dusts/diamond", "#c:dusts/echo", "#c:dusts/emerald", @@ -30,7 +28,7 @@ "#c:dusts/raginite", "#c:dusts/salt", "#c:dusts/silicon", - "#c:dusts/sodium_carbonate", + "#c:dusts/soda_ash", "#c:dusts/sulfur", "#c:dusts/wood" ] diff --git a/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json b/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json deleted file mode 100644 index bc7083308..000000000 --- a/src/generated/resources/data/c/tags/item/dusts/aluminum_fluoride.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:aluminum_fluoride_dust" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/cryolite.json b/src/generated/resources/data/c/tags/item/dusts/cryolite.json deleted file mode 100644 index 086c5b363..000000000 --- a/src/generated/resources/data/c/tags/item/dusts/cryolite.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:cryolite_dust" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/soda_ash.json b/src/generated/resources/data/c/tags/item/dusts/soda_ash.json new file mode 100644 index 000000000..17ab29402 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/soda_ash.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:soda_ash_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json b/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json deleted file mode 100644 index 487d2b7ca..000000000 --- a/src/generated/resources/data/c/tags/item/dusts/sodium_carbonate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:sodium_carbonate_dust" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/gems.json b/src/generated/resources/data/c/tags/item/gems.json index 7c478dca3..413fe31ac 100644 --- a/src/generated/resources/data/c/tags/item/gems.json +++ b/src/generated/resources/data/c/tags/item/gems.json @@ -1,6 +1,5 @@ { "values": [ - "#c:gems/cryolite", "#c:gems/echo", "#c:gems/fluorite" ] diff --git a/src/generated/resources/data/c/tags/item/gems/cryolite.json b/src/generated/resources/data/c/tags/item/gems/cryolite.json deleted file mode 100644 index 26c80ec1a..000000000 --- a/src/generated/resources/data/c/tags/item/gems/cryolite.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "ragium:cryolite" - ] -} \ 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 6c14f71c3..75f7766d1 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -16,10 +16,6 @@ "ragium:creative_battery", "ragium:creative_tank", "ragium:crusher", - "ragium:cryolite_block", - "ragium:cryolite_slab", - "ragium:cryolite_stairs", - "ragium:cryolite_wall", "ragium:cutting_machine", "ragium:deepslate_niter_ore", "ragium:deepslate_sulfur_ore", diff --git a/src/generated/resources/data/minecraft/tags/block/slabs.json b/src/generated/resources/data/minecraft/tags/block/slabs.json index 189401999..307ff4a9f 100644 --- a/src/generated/resources/data/minecraft/tags/block/slabs.json +++ b/src/generated/resources/data/minecraft/tags/block/slabs.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_slab", "ragium:fluorite_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/stairs.json b/src/generated/resources/data/minecraft/tags/block/stairs.json index fe730d506..9d1259b86 100644 --- a/src/generated/resources/data/minecraft/tags/block/stairs.json +++ b/src/generated/resources/data/minecraft/tags/block/stairs.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_stairs", "ragium:fluorite_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/walls.json b/src/generated/resources/data/minecraft/tags/block/walls.json index 3a9b4eacf..0495a9081 100644 --- a/src/generated/resources/data/minecraft/tags/block/walls.json +++ b/src/generated/resources/data/minecraft/tags/block/walls.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_wall", "ragium:fluorite_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json b/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json index 75dea581a..0b48dd775 100644 --- a/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json +++ b/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json @@ -2,7 +2,6 @@ "values": [ "ragium:aluminum_ingot", "ragium:black_steel_ingot", - "ragium:cryolite", "ragium:fluorite", "ragium:sooty_iron_ingot", "ragium:void_metal_ingot" diff --git a/src/generated/resources/data/minecraft/tags/item/slabs.json b/src/generated/resources/data/minecraft/tags/item/slabs.json index 189401999..307ff4a9f 100644 --- a/src/generated/resources/data/minecraft/tags/item/slabs.json +++ b/src/generated/resources/data/minecraft/tags/item/slabs.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_slab", "ragium:fluorite_slab" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/stairs.json b/src/generated/resources/data/minecraft/tags/item/stairs.json index fe730d506..9d1259b86 100644 --- a/src/generated/resources/data/minecraft/tags/item/stairs.json +++ b/src/generated/resources/data/minecraft/tags/item/stairs.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_stairs", "ragium:fluorite_stairs" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/walls.json b/src/generated/resources/data/minecraft/tags/item/walls.json index 3a9b4eacf..0495a9081 100644 --- a/src/generated/resources/data/minecraft/tags/item/walls.json +++ b/src/generated/resources/data/minecraft/tags/item/walls.json @@ -1,6 +1,5 @@ { "values": [ - "ragium:cryolite_wall", "ragium:fluorite_wall" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_block.json b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_block.json deleted file mode 100644 index a21263dd5..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_block.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:cryolite_block" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/cryolite_block" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_slab.json b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_slab.json deleted file mode 100644 index da029e80b..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_slab.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "conditions": [ - { - "block": "ragium:cryolite_slab", - "condition": "minecraft:block_state_property", - "properties": { - "type": "double" - } - } - ], - "count": 2.0, - "function": "minecraft:set_count" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:cryolite_slab" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/cryolite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_stairs.json b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_stairs.json deleted file mode 100644 index 8dfa58122..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_stairs.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:cryolite_stairs" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/cryolite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json b/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json deleted file mode 100644 index a5b97fcbc..000000000 --- a/src/generated/resources/data/ragium/loot_table/blocks/cryolite_wall.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "ragium:cryolite_wall" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "ragium:blocks/cryolite_wall" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot.json b/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot.json deleted file mode 100644 index db409a609..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 1, - "items": "#ragium:cokes" - }, - "ingredient": { - "count": 1, - "items": "#c:dusts/alumina" - }, - "result": { - "count": 2, - "id": "ragium:aluminum_ingot" - }, - "time": 800 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot_with_cryolite.json b/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot_with_cryolite.json deleted file mode 100644 index 9c4035abf..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/aluminum_ingot_with_cryolite.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "ragium:alloying", - "extras": [ - { - "count": 1, - "items": "#ragium:cokes" - }, - { - "count": 1, - "items": { - "neoforge:ingredient_type": "ragium:material_tags", - "tags": [ - "c:dusts/cryolite", - "c:gems/cryolite" - ] - } - } - ], - "ingredient": { - "count": 1, - "items": "#c:dusts/alumina" - }, - "result": { - "count": 3, - "id": "ragium:aluminum_ingot" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json b/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json deleted file mode 100644 index 125afcec1..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/cryolite_dust.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 3, - "items": "#c:dusts/sodium_carbonate" - }, - "ingredient": { - "count": 2, - "items": "#c:dusts/aluminum_fluoride" - }, - "result": { - "count": 1, - "id": "ragium:cryolite_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/glass.json b/src/generated/resources/data/ragium/recipe/alloying/glass.json index 45bab79f2..47d5934c6 100644 --- a/src/generated/resources/data/ragium/recipe/alloying/glass.json +++ b/src/generated/resources/data/ragium/recipe/alloying/glass.json @@ -2,7 +2,7 @@ "type": "ragium:alloying", "extra": { "count": 1, - "items": "#c:dusts/sodium_carbonate" + "items": "#c:dusts/soda_ash" }, "ingredient": { "count": 2, diff --git a/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json b/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json deleted file mode 100644 index 65fbd5a46..000000000 --- a/src/generated/resources/data/ragium/recipe/assembling/alclad_plate.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:assembling", - "extra": { - "count": 1, - "items": "#c:ingots/copper" - }, - "ingredient": { - "count": 3, - "items": "#c:ingots/aluminum" - }, - "result": { - "count": 4, - "id": "ragium:alclad_plate" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/blasting/soda_ash_dust.json similarity index 79% rename from src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json rename to src/generated/resources/data/ragium/recipe/blasting/soda_ash_dust.json index 5c40bbfb8..95e857dd9 100644 --- a/src/generated/resources/data/ragium/recipe/blasting/sodium_carbonate_dust.json +++ b/src/generated/resources/data/ragium/recipe/blasting/soda_ash_dust.json @@ -5,6 +5,6 @@ "experience": 0.15, "ingredient": "minecraft:dried_kelp", "result": { - "id": "ragium:sodium_carbonate_dust" + "id": "ragium:soda_ash_dust" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/cryolite.json b/src/generated/resources/data/ragium/recipe/crushing/cryolite.json deleted file mode 100644 index 5006ddb27..000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/cryolite.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "ragium:cryolite_block" - }, - "result": { - "count": 4, - "id": "ragium:cryolite" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/cryolite_dust_from_gem.json b/src/generated/resources/data/ragium/recipe/crushing/cryolite_dust_from_gem.json deleted file mode 100644 index 4ca387edf..000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/cryolite_dust_from_gem.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "#c:gems/cryolite" - }, - "result": { - "count": 1, - "id": "ragium:cryolite_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/alumina_solution.json b/src/generated/resources/data/ragium/recipe/mixing/alumina_solution.json deleted file mode 100644 index 660da860b..000000000 --- a/src/generated/resources/data/ragium/recipe/mixing/alumina_solution.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:mixing", - "fluid_ingredient": { - "amount": 500, - "fluids": "#c:sodium_hydroxide_solution" - }, - "item_ingredient": { - "count": 1, - "items": "#c:dusts/bauxite" - }, - "result": { - "amount": 1000, - "id": "ragium:alumina_solution" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json b/src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json deleted file mode 100644 index dbe7c101d..000000000 --- a/src/generated/resources/data/ragium/recipe/reacting/aluminum_fluoride_dust.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "ragium:reacting", - "fluid_result": { - "amount": 1000, - "id": "minecraft:water" - }, - "item_result": { - "count": 1, - "id": "ragium:aluminum_fluoride_dust" - }, - "primary_ingredient": { - "amount": 1000, - "fluids": "#c:alumina_solution" - }, - "secondary_ingredient": { - "amount": 3000, - "fluids": "#c:hydrofluoric_acid" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/alumina_solution.json b/src/generated/resources/data/ragium/recipe/refining/alumina_solution.json deleted file mode 100644 index 415a16752..000000000 --- a/src/generated/resources/data/ragium/recipe/refining/alumina_solution.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:refining", - "fluid_result": { - "amount": 1000, - "id": "minecraft:water" - }, - "ingredient": { - "amount": 1000, - "fluids": "#c:alumina_solution" - }, - "item_result": { - "count": 1, - "id": "ragium:alumina_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json b/src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json index 9b4e8c121..2938d91f0 100644 --- a/src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json +++ b/src/generated/resources/data/ragium/recipe/refining/sodium_hydroxide_solution.json @@ -10,7 +10,7 @@ }, "item_result": { "count": 1, - "id": "ragium:sodium_carbonate_dust" + "id": "ragium:soda_ash_dust" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/cryolite_block.json b/src/generated/resources/data/ragium/recipe/shaped/cryolite_block.json deleted file mode 100644 index 08350be81..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/cryolite_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "building", - "group": "cryolite_block", - "key": { - "A": "#c:gems/cryolite" - }, - "pattern": [ - "AA", - "AA" - ], - "result": { - "id": "ragium:cryolite_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/cryolite_slab.json b/src/generated/resources/data/ragium/recipe/shaped/cryolite_slab.json deleted file mode 100644 index 478b42a56..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/cryolite_slab.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "cryolite_slab", - "key": { - "A": "ragium:cryolite_block" - }, - "pattern": [ - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:cryolite_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/cryolite_stairs.json b/src/generated/resources/data/ragium/recipe/shaped/cryolite_stairs.json deleted file mode 100644 index b11cf3ced..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/cryolite_stairs.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "cryolite_stairs", - "key": { - "A": "ragium:cryolite_block" - }, - "pattern": [ - "A ", - "AA ", - "AAA" - ], - "result": { - "count": 4, - "id": "ragium:cryolite_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json b/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json deleted file mode 100644 index fbd1c0470..000000000 --- a/src/generated/resources/data/ragium/recipe/shaped/cryolite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "group": "cryolite_wall", - "key": { - "A": "ragium:cryolite_block" - }, - "pattern": [ - "AAA", - "AAA" - ], - "result": { - "count": 6, - "id": "ragium:cryolite_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json index 328d05aa3..cc1d04c30 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json +++ b/src/generated/resources/data/ragium/recipe/shaped/electrolyzer.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "ragium:alclad_plate", + "A": "#c:nuggets/black_steel", "B": "ragium:electronics_machine_parts", "C": "#c:gears/diamond", "D": "#minecraft:lightning_rods" diff --git a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json index 92293a8da..1408c53ad 100644 --- a/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json +++ b/src/generated/resources/data/ragium/recipe/shaped/precision_assembler.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": "ragium:alclad_plate", + "A": "#c:nuggets/black_steel", "B": "ragium:electronics_machine_parts", "C": "#c:gears/diamond", "D": "ragium:assembler" diff --git a/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json b/src/generated/resources/data/ragium/recipe/smelting/soda_ash_dust.json similarity index 79% rename from src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json rename to src/generated/resources/data/ragium/recipe/smelting/soda_ash_dust.json index d6b4c276b..c39669d48 100644 --- a/src/generated/resources/data/ragium/recipe/smelting/sodium_carbonate_dust.json +++ b/src/generated/resources/data/ragium/recipe/smelting/soda_ash_dust.json @@ -5,6 +5,6 @@ "experience": 0.15, "ingredient": "minecraft:dried_kelp", "result": { - "id": "ragium:sodium_carbonate_dust" + "id": "ragium:soda_ash_dust" } } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_slab.json b/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_slab.json deleted file mode 100644 index f23b3e354..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:cryolite_block", - "result": { - "count": 2, - "id": "ragium:cryolite_slab" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_stairs.json b/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_stairs.json deleted file mode 100644 index 19f17a6ca..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_stairs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:cryolite_block", - "result": { - "id": "ragium:cryolite_stairs" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json b/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json deleted file mode 100644 index baa7c76fe..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/cryolite_wall.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "ragium:cryolite_block", - "result": { - "id": "ragium:cryolite_wall" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/packed_ice.json b/src/generated/resources/data/ragium/recipe/washing/alumina_dust_from_clay.json similarity index 51% rename from src/generated/resources/data/ragium/recipe/washing/packed_ice.json rename to src/generated/resources/data/ragium/recipe/washing/alumina_dust_from_clay.json index 582d0174f..6623cdc76 100644 --- a/src/generated/resources/data/ragium/recipe/washing/packed_ice.json +++ b/src/generated/resources/data/ragium/recipe/washing/alumina_dust_from_clay.json @@ -2,20 +2,20 @@ "type": "ragium:washing", "fluid_ingredient": { "amount": 1000, - "fluids": "#c:hydrofluoric_acid" + "fluids": "#c:water" }, "item_ingredient": { "count": 1, - "items": "minecraft:blue_ice" + "items": "minecraft:clay" }, "results": [ { - "count": 6, - "id": "minecraft:packed_ice" + "count": 2, + "id": "ragium:alumina_dust" }, { - "count": 1, - "id": "ragium:cryolite" + "count": 2, + "id": "ragium:quartz_dust" } ], "time": 200 diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index dada2370c..e18767388 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -21,10 +21,6 @@ "creative_tank", "crude_oil", "crusher", - "cryolite_block", - "cryolite_slab", - "cryolite_stairs", - "cryolite_wall", "cutting_machine", "cyan_dye", "deepslate_niter_ore", @@ -205,14 +201,12 @@ "yellow_dye" ], "minecraft:item": [ - "alclad_plate", "alcohol_bucket", "aldehyde_bucket", "alloy_smelter", "alumina_dust", "alumina_solution_bucket", "aluminum_block", - "aluminum_fluoride_dust", "aluminum_ingot", "aluminum_nugget", "amethyst_dust", @@ -259,12 +253,6 @@ "crude_oil_bucket", "crude_silicon", "crusher", - "cryolite", - "cryolite_block", - "cryolite_dust", - "cryolite_slab", - "cryolite_stairs", - "cryolite_wall", "cutting_machine", "cyan_dye_bucket", "deepslate_niter_ore", @@ -368,7 +356,7 @@ "silicon_dust", "silicon_wafer", "smelter", - "sodium_carbonate_dust", + "soda_ash_dust", "sodium_hydroxide_solution_bucket", "sooty_iron_axe", "sooty_iron_block", diff --git a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt index 59c128668..2a1913595 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/RagiumConfig.kt @@ -114,15 +114,15 @@ data object RagiumConfig { @JvmField val melter: HTEnergyConfig = - HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER) + HTEnergyConfig.createMachine(builder, RagiumConstants.MELTER, 64) @JvmField val pyrolyzer: HTEnergyConfig = - HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER) + HTEnergyConfig.createMachine(builder, RagiumConstants.PYROLYZER, 32) @JvmField val refinery: HTEnergyConfig = - HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY) + HTEnergyConfig.createMachine(builder, RagiumConstants.REFINERY, 32) @JvmField val smelter: HTEnergyConfig = diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index efde60e46..4befeeb7a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -110,18 +110,13 @@ sealed interface RagiumMaterial : /** * @since 26.1.8 */ - SODIUM_CARBONATE("Sodium Carbonate", "炭酸ナトリウム", RagiumChemicals.SODIUM_CARBONATE), + SODA_ASH("Soda Ash", "ソーダ灰", RagiumChemicals.SODIUM_CARBONATE), /** * @since 26.1.7 */ ALUMINA("Alumina", "アルミナ", RagiumChemicals.ALUMINUM_OXIDE), - /** - * @since 26.1.8 - */ - ALUMINUM_FLUORIDE("Aluminum Fluoride", "フッ化アルミニウム", RagiumChemicals.ALUMINUM_FLUORIDE), - /** * @since 26.1.7 */ @@ -163,12 +158,7 @@ sealed interface RagiumMaterial : /** * @since 26.1.7 */ - FLUORITE("Fluorite", "蛍石", RagiumChemicals.FLUORITE), - - /** - * @since 26.1.7 - */ - CRYOLITE("Cryolite", "氷晶石", RagiumChemicals.CRYOLITE) + FLUORITE("Fluorite", "蛍石", RagiumChemicals.FLUORITE) ; constructor(enName: String, jaName: String, chemicalKey: ResourceKey? = null) : this( diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt index 293fd96fe..169ae3030 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt @@ -55,5 +55,9 @@ inline fun HTJeiRecipeType( */ inline fun HTJeiRecipeType(type: RecipeType<*>, icon: HTItemInstanceLike): HTJeiRecipeType { val id: Identifier = BuiltInRegistries.RECIPE_TYPE.getKeyOrNull(type) ?: error("Unregistered recipe type: $type") - return HTJeiRecipeType(id, HTHasText { translatableText(id.toLanguageKey()) }, Either.Right(icon.toStack())) + return HTJeiRecipeType( + id, + HTHasText { translatableText(id.toLanguageKey("recipe_type")) }, + Either.Right(icon.toStack()) + ) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt index 7efd56b72..66466290a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/RagiumBlocks.kt @@ -208,7 +208,7 @@ data object RagiumBlocks { ) // Cryolite - @JvmField + /*@JvmField val CRYOLITE_BLOCK: HTSimpleDeferredBlockAndItem = REGISTER.registerSimple( "cryolite_block", copyOf(Blocks.QUARTZ_BLOCK), @@ -220,7 +220,7 @@ data object RagiumBlocks { REGISTER, RagiumMaterial.Gem.CRYOLITE.materialName, CRYOLITE_BLOCK - ) + )*/ // Glass @JvmField @@ -234,8 +234,8 @@ data object RagiumBlocks { // Helper @JvmField val ALL_DECORATIONS: List = listOf( - FLUORITE_DECORATION, - CRYOLITE_DECORATION + FLUORITE_DECORATION + // CRYOLITE_DECORATION ) // Machine // diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 53d802092..ba0377208 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -76,7 +76,7 @@ data object RagiumItems { putAll(RagiumMaterial.Gem.ECHO, HTItemPart.DUST) putAll(RagiumMaterial.Gem.PRISMARINE, HTItemPart.DUST) putAll(RagiumMaterial.Gem.FLUORITE, HTItemPart.DUST, HTItemPart.GEM) - putAll(RagiumMaterial.Gem.CRYOLITE, HTItemPart.DUST, HTItemPart.GEM) + // putAll(RagiumMaterial.Gem.CRYOLITE, HTItemPart.DUST, HTItemPart.GEM) // Metal putAll(RagiumMaterial.Metal.COPPER, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Metal.IRON, HTItemPart.DUST, HTItemPart.GEAR) @@ -168,8 +168,7 @@ data object RagiumItems { @JvmField val CFRP_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("cfrp_plate") - @JvmField - val ALCLAD_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("alclad_plate") + // val ALCLAD_PLATE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("alclad_plate") // Bio @JvmField diff --git a/src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png b/src/main/resources/assets/ragium/textures/item/soda_ash_dust.png similarity index 100% rename from src/main/resources/assets/ragium/textures/item/sodium_carbonate_dust.png rename to src/main/resources/assets/ragium/textures/item/soda_ash_dust.png