diff --git a/src/client/kotlin/hiiragi283/ragium/api/machine/HTClientMachinePropertyKeys.kt b/src/client/kotlin/hiiragi283/ragium/api/machine/HTClientMachinePropertyKeys.kt index 962f225d6..56afa2719 100644 --- a/src/client/kotlin/hiiragi283/ragium/api/machine/HTClientMachinePropertyKeys.kt +++ b/src/client/kotlin/hiiragi283/ragium/api/machine/HTClientMachinePropertyKeys.kt @@ -12,9 +12,9 @@ import net.minecraft.util.Identifier object HTClientMachinePropertyKeys { @JvmField val DYNAMIC_RENDERER: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("dynamic_renderer")) + HTPropertyKey.ofSimple(RagiumAPI.id("dynamic_renderer")) @JvmField val MODEL_ID: HTPropertyKey.Defaulted = - HTPropertyKey.Defaulted(RagiumAPI.id("model_id")) { HTProcessorMachineModel.MODEL_ID } + HTPropertyKey.ofDefaulted(RagiumAPI.id("model_id")) { HTProcessorMachineModel.MODEL_ID } } diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 7d74bc1b5..0cbd84840 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -4,6 +4,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.content.HTRegistryContent import hiiragi283.ragium.api.extension.getOrNull import hiiragi283.ragium.api.gui.HTMachineScreenBase +import hiiragi283.ragium.api.machine.block.HTMachineBlockEntityBase import hiiragi283.ragium.client.extension.getBlockEntity import hiiragi283.ragium.client.extension.registerClientReceiver import hiiragi283.ragium.client.gui.HTFireboxMachineScreen @@ -14,6 +15,7 @@ import hiiragi283.ragium.client.model.HTFluidCubeModel import hiiragi283.ragium.client.model.HTProcessorMachineModel import hiiragi283.ragium.client.renderer.HTFireboxBlockEntityRenderer import hiiragi283.ragium.client.renderer.HTItemDisplayBlockEntityRenderer +import hiiragi283.ragium.client.renderer.HTMachineBlockEntityRenderer import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.* import hiiragi283.ragium.common.network.HTFloatingItemPayload @@ -33,6 +35,7 @@ import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant import net.minecraft.block.Block import net.minecraft.block.BlockState +import net.minecraft.block.entity.BlockEntityType import net.minecraft.client.gui.screen.Screen import net.minecraft.client.gui.screen.ingame.HandledScreens import net.minecraft.client.render.RenderLayer @@ -61,6 +64,7 @@ object RagiumClient : ClientModInitializer { // Blocks // + @JvmStatic private fun registerBlocks() { // cutout buildList { @@ -87,21 +91,31 @@ object RagiumClient : ClientModInitializer { BlockEntityRendererFactories.register(RagiumBlockEntityTypes.FIREBOX) { HTFireboxBlockEntityRenderer } BlockEntityRendererFactories.register(RagiumBlockEntityTypes.ITEM_DISPLAY) { HTItemDisplayBlockEntityRenderer } + registerMachineRenderer(RagiumBlockEntityTypes.MULTI_SMELTER) + ColorProviderRegistry.BLOCK.register({ state: BlockState, _: BlockRenderView?, _: BlockPos?, _: Int -> state.getOrNull(RagiumBlockProperties.COLOR)?.fireworkColor ?: -1 }, RagiumBlocks.BACKPACK_INTERFACE) } + @JvmStatic private fun registerCutout(block: Block) { BlockRenderLayerMap.INSTANCE.putBlock(block, RenderLayer.getCutout()) } + @JvmStatic private fun registerCutoutMipped(block: Block) { BlockRenderLayerMap.INSTANCE.putBlock(block, RenderLayer.getCutoutMipped()) } + @JvmStatic + private fun registerMachineRenderer(type: BlockEntityType) { + BlockEntityRendererFactories.register(type) { HTMachineBlockEntityRenderer } + } + // Entities // + @JvmStatic private fun registerEntities() { EntityRendererRegistry.register(RagiumEntityTypes.REMOVER_DYNAMITE, ::FlyingItemEntityRenderer) EntityRendererRegistry.register(RagiumEntityTypes.DYNAMITE, ::FlyingItemEntityRenderer) @@ -109,8 +123,9 @@ object RagiumClient : ClientModInitializer { // Fluids // + @JvmStatic private fun registerFluids() { - RagiumContents.Fluids.entries.forEach { fluid: RagiumContents.Fluids -> + RagiumFluids.entries.forEach { fluid: RagiumFluids -> FluidRenderHandlerRegistry.INSTANCE.register( fluid.value, SimpleFluidRenderHandler( @@ -124,14 +139,16 @@ object RagiumClient : ClientModInitializer { // Items // + @JvmStatic private fun registerItems() { ColorProviderRegistry.ITEM.register({ stack: ItemStack, _: Int -> stack.get(RagiumComponentTypes.COLOR)?.entityColor ?: -1 - }, RagiumContents.Misc.BACKPACK) + }, RagiumItems.BACKPACK) } // Screens // + @JvmStatic private fun registerScreens() { HandledScreens.register(RagiumScreenHandlerTypes.FIREBOX, ::HTFireboxMachineScreen) HandledScreens.register(RagiumScreenHandlerTypes.LARGE_MACHINE, ::HTLargeMachineScreen) @@ -141,6 +158,7 @@ object RagiumClient : ClientModInitializer { // Events // + @JvmStatic private fun registerEvents() { ModelLoadingPlugin.register { context: ModelLoadingPlugin.Context -> // register item model resolver @@ -160,6 +178,7 @@ object RagiumClient : ClientModInitializer { // Networks // + @JvmStatic private fun registerNetworks() { RagiumNetworks.FLOATING_ITEM.registerClientReceiver { payload: HTFloatingItemPayload, context: ClientPlayNetworking.Context -> context.client().gameRenderer.showFloatingItem(payload.stack) diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumDefaultClientPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumDefaultClientPlugin.kt index 2d404dfea..04b88857a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumDefaultClientPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumDefaultClientPlugin.kt @@ -4,6 +4,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumPlugin import hiiragi283.ragium.api.extension.isClientEnv import hiiragi283.ragium.api.machine.HTClientMachinePropertyKeys +import hiiragi283.ragium.api.machine.HTMachineKey import hiiragi283.ragium.api.renderer.HTMultiblockPreviewRenderer import hiiragi283.ragium.common.init.RagiumMachineKeys @@ -14,7 +15,7 @@ object RagiumDefaultClientPlugin : RagiumPlugin { override fun shouldLoad(): Boolean = isClientEnv() - override fun setupClientMachineProperties(helper: RagiumPlugin.PropertyHelper) { + override fun setupClientMachineProperties(helper: RagiumPlugin.PropertyHelper) { helper.modify(RagiumMachineKeys.BLAST_FURNACE) { set(HTClientMachinePropertyKeys.DYNAMIC_RENDERER, HTMultiblockPreviewRenderer) } diff --git a/src/client/kotlin/hiiragi283/ragium/client/model/HTFluidCubeModel.kt b/src/client/kotlin/hiiragi283/ragium/client/model/HTFluidCubeModel.kt index 97e8e4dcb..dbf163b4a 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/model/HTFluidCubeModel.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/model/HTFluidCubeModel.kt @@ -3,8 +3,8 @@ package hiiragi283.ragium.client.model import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.client.extension.FLUID_CUBE_TRANSFORM import hiiragi283.ragium.client.extension.getSpriteAndColor -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumComponentTypes +import hiiragi283.ragium.common.init.RagiumItems import net.fabricmc.api.EnvType import net.fabricmc.api.Environment import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView @@ -75,7 +75,7 @@ data object HTFluidCubeModel : UnbakedModel, BakedModel { .getInstance() .itemRenderer .models - .getModel(RagiumContents.Misc.EMPTY_FLUID_CUBE.asItem()) + .getModel(RagiumItems.EMPTY_FLUID_CUBE.asItem()) ?.emitItemQuads(stack, randomSupplier, context) // render fluid val (sprite: Sprite, color: Int) = stack.get(RagiumComponentTypes.FLUID)?.getSpriteAndColor() ?: return diff --git a/src/client/kotlin/hiiragi283/ragium/data/RagiumLangProviders.kt b/src/client/kotlin/hiiragi283/ragium/data/RagiumLangProviders.kt index 1e0b43aea..cafe3dca5 100644 --- a/src/client/kotlin/hiiragi283/ragium/data/RagiumLangProviders.kt +++ b/src/client/kotlin/hiiragi283/ragium/data/RagiumLangProviders.kt @@ -78,7 +78,7 @@ object RagiumLangProviders { addAll(HTCrafterHammerItem.Behavior.entries) }.forEach { item: HTContent -> builder.add(item, item.getTranslation(type)) } // fluids - RagiumContents.Fluids.entries.forEach { fluid: RagiumContents.Fluids -> + RagiumFluids.entries.forEach { fluid: RagiumFluids -> builder.add( fluid.translationKey, fluid.getTranslation(type), @@ -130,34 +130,34 @@ object RagiumLangProviders { builder.add(RagiumEnchantments.SLEDGE_HAMMER, "Sledge Hammer") builder.add(RagiumEnchantments.BUZZ_SAW, "Buzz Saw") // Items - builder.add(RagiumContents.Foods.BEE_WAX, "Bee Wax") - builder.add(RagiumContents.Foods.BUTTER, "Butter") - builder.add(RagiumContents.Foods.CARAMEL, "Caramel") - builder.add(RagiumContents.Foods.CHOCOLATE, "Chocolate") - builder.add(RagiumContents.Foods.CHOCOLATE_APPLE, "Chocolate Apple") - builder.add(RagiumContents.Foods.CHOCOLATE_BREAD, "Chocolate Bread") - builder.add(RagiumContents.Foods.FLOUR, "Flour") - builder.add(RagiumContents.Foods.DOUGH, "Dough") - builder.add(RagiumContents.Foods.MINCED_MEAT, "Minced Meat") - builder.add(RagiumContents.Foods.PULP, "Pulp") - - builder.add(RagiumContents.Misc.BACKPACK, "Backpack") - builder.add(RagiumContents.Misc.BASALT_MESH, "Basalt Mesh") - builder.add(RagiumContents.Misc.CRAFTER_HAMMER, "Crafter's Hammer") - builder.add(RagiumContents.Misc.DYNAMITE, "Dynamite") - builder.add(RagiumContents.Misc.EMPTY_FLUID_CUBE, "Fluid Cube (Empty)") - builder.add(RagiumContents.Misc.FILLED_FLUID_CUBE, "Fluid Cube (%s)") - builder.add(RagiumContents.Misc.ENGINE, "V8 Engine") - builder.add(RagiumContents.Misc.FORGE_HAMMER, "Forge Hammer") - builder.add(RagiumContents.Misc.HEART_OF_THE_NETHER, "Heart of the Nether") - builder.add(RagiumContents.Misc.POLYMER_RESIN, "Polymer Resin") - builder.add(RagiumContents.Misc.PROCESSOR_SOCKET, "Processor Socket") - builder.add(RagiumContents.Misc.RAGI_ALLOY_COMPOUND, "Ragi-Alloy Compound") - builder.add(RagiumContents.Misc.RAGI_CRYSTAL_PROCESSOR, "Ragi-Crystal Processor") - builder.add(RagiumContents.Misc.REMOVER_DYNAMITE, "Remover Dynamite") - builder.add(RagiumContents.Misc.SOAP_INGOT, "Soap Ingot") - builder.add(RagiumContents.Misc.SOLAR_PANEL, "Solar Panel") - builder.add(RagiumContents.Misc.TRADER_CATALOG, "Trader Catalog") + builder.add(RagiumItems.BEE_WAX, "Bee Wax") + builder.add(RagiumItems.BUTTER, "Butter") + builder.add(RagiumItems.CARAMEL, "Caramel") + builder.add(RagiumItems.CHOCOLATE, "Chocolate") + builder.add(RagiumItems.CHOCOLATE_APPLE, "Chocolate Apple") + builder.add(RagiumItems.CHOCOLATE_BREAD, "Chocolate Bread") + builder.add(RagiumItems.FLOUR, "Flour") + builder.add(RagiumItems.DOUGH, "Dough") + builder.add(RagiumItems.MINCED_MEAT, "Minced Meat") + builder.add(RagiumItems.PULP, "Pulp") + + builder.add(RagiumItems.BACKPACK, "Backpack") + builder.add(RagiumItems.BASALT_MESH, "Basalt Mesh") + builder.add(RagiumItems.CRAFTER_HAMMER, "Crafter's Hammer") + builder.add(RagiumItems.DYNAMITE, "Dynamite") + builder.add(RagiumItems.EMPTY_FLUID_CUBE, "Fluid Cube (Empty)") + builder.add(RagiumItems.FILLED_FLUID_CUBE, "Fluid Cube (%s)") + builder.add(RagiumItems.ENGINE, "V8 Engine") + builder.add(RagiumItems.FORGE_HAMMER, "Forge Hammer") + builder.add(RagiumItems.HEART_OF_THE_NETHER, "Heart of the Nether") + builder.add(RagiumItems.POLYMER_RESIN, "Polymer Resin") + builder.add(RagiumItems.PROCESSOR_SOCKET, "Processor Socket") + builder.add(RagiumItems.RAGI_ALLOY_COMPOUND, "Ragi-Alloy Compound") + builder.add(RagiumItems.RAGI_CRYSTAL_PROCESSOR, "Ragi-Crystal Processor") + builder.add(RagiumItems.REMOVER_DYNAMITE, "Remover Dynamite") + builder.add(RagiumItems.SOAP_INGOT, "Soap Ingot") + builder.add(RagiumItems.SOLAR_PANEL, "Solar Panel") + builder.add(RagiumItems.TRADER_CATALOG, "Trader Catalog") builder.add(RagiumTranslationKeys.CRAFTER_HAMMER_MODULE, "Module: %s") builder.add(RagiumTranslationKeys.DYNAMITE_DESTROY, "Destroy: %s") @@ -221,24 +221,24 @@ object RagiumLangProviders { "Smelt two ingredients into one", ) builder.add(RagiumMachineKeys.ASSEMBLER, "Assembler") - builder.add(RagiumMachineKeys.CHEMICAL_REACTOR, "Chemical Reactor") - builder.add(RagiumMachineKeys.ELECTROLYZER, "Electrolyzer") - builder.add(RagiumMachineKeys.EXTRACTOR, "Extractor") - builder.add(RagiumMachineKeys.GRINDER, "Grinder") - builder.add(RagiumMachineKeys.METAL_FORMER, "Metal Former") - builder.add(RagiumMachineKeys.MIXER, "Mixer") - builder.add(RagiumMachineKeys.ROCK_GENERATOR, "Rock Generator") - builder.add( RagiumMachineKeys.BLAST_FURNACE, "Large Blast Furnace", "Smelt multiple ingredients into one", ) + builder.add(RagiumMachineKeys.CHEMICAL_REACTOR, "Chemical Reactor") builder.add( RagiumMachineKeys.DISTILLATION_TOWER, "Distillation Tower", "Process Crude Oil", ) + builder.add(RagiumMachineKeys.ELECTROLYZER, "Electrolyzer") + builder.add(RagiumMachineKeys.EXTRACTOR, "Extractor") + builder.add(RagiumMachineKeys.GRINDER, "Grinder") + builder.add(RagiumMachineKeys.METAL_FORMER, "Metal Former") + builder.add(RagiumMachineKeys.MIXER, "Mixer") + builder.add(RagiumMachineKeys.MULTI_SMELTER, "Multi Smelter") + builder.add(RagiumMachineKeys.ROCK_GENERATOR, "Rock Generator") builder.add( RagiumMachineKeys.SAW_MILL, "Saw Mill", @@ -305,35 +305,35 @@ object RagiumLangProviders { builder.add(RagiumEnchantments.SLEDGE_HAMMER, "粉砕") builder.add(RagiumEnchantments.BUZZ_SAW, "製材") // Items - builder.add(RagiumContents.Foods.BEE_WAX, "蜜蠟") - builder.add(RagiumContents.Foods.BUTTER, "バター") - builder.add(RagiumContents.Foods.CARAMEL, "キャラメル") - builder.add(RagiumContents.Foods.CHOCOLATE, "チョコレート") - builder.add(RagiumContents.Foods.CHOCOLATE_APPLE, "チョコリンゴ") - builder.add(RagiumContents.Foods.CHOCOLATE_BREAD, "チョコパン") - builder.add(RagiumContents.Foods.FLOUR, "小麦粉") - builder.add(RagiumContents.Foods.DOUGH, "生地") - builder.add(RagiumContents.Foods.MINCED_MEAT, "ひき肉") - builder.add(RagiumContents.Foods.PULP, "パルプ") - - builder.add(RagiumContents.Misc.BACKPACK, "バックパック") - builder.add(RagiumContents.Misc.BASALT_MESH, "玄武岩メッシュ") - builder.add(RagiumContents.Misc.CRAFTER_HAMMER, "クラフターズ・ハンマー") - builder.add(RagiumContents.Misc.DYNAMITE, "ダイナマイト") - builder.add(RagiumContents.Misc.EMPTY_FLUID_CUBE, "液体キューブ(なし)") - builder.add(RagiumContents.Misc.FILLED_FLUID_CUBE, "液体キューブ(%s)") - builder.add(RagiumContents.Misc.ENGINE, "V8エンジン") - builder.add(RagiumContents.Misc.FORGE_HAMMER, "鍛造ハンマー") - builder.add(RagiumContents.Misc.HEART_OF_THE_NETHER, "地獄の心臓") - // builder.add(RagiumContents.Misc.OBLIVION_CUBE_SPAWN_EGG, "スポーン 忘却の箱") - builder.add(RagiumContents.Misc.POLYMER_RESIN, "高分子樹脂") - builder.add(RagiumContents.Misc.PROCESSOR_SOCKET, "プロセッサソケット") - builder.add(RagiumContents.Misc.RAGI_ALLOY_COMPOUND, "ラギ合金混合物") - builder.add(RagiumContents.Misc.RAGI_CRYSTAL_PROCESSOR, "ラギクリスタリルプロセッサ") - builder.add(RagiumContents.Misc.REMOVER_DYNAMITE, "削除用ダイナマイト") - builder.add(RagiumContents.Misc.SOAP_INGOT, "石鹸インゴット") - builder.add(RagiumContents.Misc.SOLAR_PANEL, "太陽光パネル") - builder.add(RagiumContents.Misc.TRADER_CATALOG, "行商人カタログ") + builder.add(RagiumItems.BEE_WAX, "蜜蠟") + builder.add(RagiumItems.BUTTER, "バター") + builder.add(RagiumItems.CARAMEL, "キャラメル") + builder.add(RagiumItems.CHOCOLATE, "チョコレート") + builder.add(RagiumItems.CHOCOLATE_APPLE, "チョコリンゴ") + builder.add(RagiumItems.CHOCOLATE_BREAD, "チョコパン") + builder.add(RagiumItems.FLOUR, "小麦粉") + builder.add(RagiumItems.DOUGH, "生地") + builder.add(RagiumItems.MINCED_MEAT, "ひき肉") + builder.add(RagiumItems.PULP, "パルプ") + + builder.add(RagiumItems.BACKPACK, "バックパック") + builder.add(RagiumItems.BASALT_MESH, "玄武岩メッシュ") + builder.add(RagiumItems.CRAFTER_HAMMER, "クラフターズ・ハンマー") + builder.add(RagiumItems.DYNAMITE, "ダイナマイト") + builder.add(RagiumItems.EMPTY_FLUID_CUBE, "液体キューブ(なし)") + builder.add(RagiumItems.FILLED_FLUID_CUBE, "液体キューブ(%s)") + builder.add(RagiumItems.ENGINE, "V8エンジン") + builder.add(RagiumItems.FORGE_HAMMER, "鍛造ハンマー") + builder.add(RagiumItems.HEART_OF_THE_NETHER, "地獄の心臓") + // builder.add(RagiumItems.OBLIVION_CUBE_SPAWN_EGG, "スポーン 忘却の箱") + builder.add(RagiumItems.POLYMER_RESIN, "高分子樹脂") + builder.add(RagiumItems.PROCESSOR_SOCKET, "プロセッサソケット") + builder.add(RagiumItems.RAGI_ALLOY_COMPOUND, "ラギ合金混合物") + builder.add(RagiumItems.RAGI_CRYSTAL_PROCESSOR, "ラギクリスタリルプロセッサ") + builder.add(RagiumItems.REMOVER_DYNAMITE, "削除用ダイナマイト") + builder.add(RagiumItems.SOAP_INGOT, "石鹸インゴット") + builder.add(RagiumItems.SOLAR_PANEL, "太陽光パネル") + builder.add(RagiumItems.TRADER_CATALOG, "行商人カタログ") builder.add(RagiumTranslationKeys.CRAFTER_HAMMER_MODULE, "モジュール: %s") builder.add(RagiumTranslationKeys.DYNAMITE_DESTROY, "地形破壊: %s") @@ -373,18 +373,17 @@ object RagiumLangProviders { builder.add(RagiumMachineKeys.ALLOY_FURNACE, "合金かまど", "二つの素材を一つに焼き上げる") builder.add(RagiumMachineKeys.ASSEMBLER, "組立機") + builder.add(RagiumMachineKeys.BLAST_FURNACE, "大型高炉", "複数の素材を一つに焼き上げる") builder.add(RagiumMachineKeys.CHEMICAL_REACTOR, "化学反応槽") + builder.add(RagiumMachineKeys.DISTILLATION_TOWER, "蒸留塔", "原油を処理する") builder.add(RagiumMachineKeys.ELECTROLYZER, "電解槽") builder.add(RagiumMachineKeys.EXTRACTOR, "抽出器") builder.add(RagiumMachineKeys.GRINDER, "粉砕機") builder.add(RagiumMachineKeys.METAL_FORMER, "金属加工機") + builder.add(RagiumMachineKeys.MULTI_SMELTER, "並列精錬機") builder.add(RagiumMachineKeys.MIXER, "ミキサー") builder.add(RagiumMachineKeys.ROCK_GENERATOR, "岩石生成機", "岩石を生成する") - - builder.add(RagiumMachineKeys.BLAST_FURNACE, "大型高炉", "複数の素材を一つに焼き上げる") - builder.add(RagiumMachineKeys.DISTILLATION_TOWER, "蒸留塔", "原油を処理する") builder.add(RagiumMachineKeys.SAW_MILL, "製材機", "より効率的に原木を加工する") - // Mod Menu builder.add(RagiumTranslationKeys.CONFIG_TILE, "Ragium - Config") builder.add(RagiumTranslationKeys.CONFIG_IS_HARD_MODE, "ハードモードの切り替え(reloadコマンドで反映)") diff --git a/src/client/kotlin/hiiragi283/ragium/data/RagiumModelProvider.kt b/src/client/kotlin/hiiragi283/ragium/data/RagiumModelProvider.kt index 69388d781..1adb5bd4e 100644 --- a/src/client/kotlin/hiiragi283/ragium/data/RagiumModelProvider.kt +++ b/src/client/kotlin/hiiragi283/ragium/data/RagiumModelProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.ragium.api.machine.block.HTMachineBlock import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumBlockProperties import hiiragi283.ragium.common.init.RagiumBlocks +import hiiragi283.ragium.common.init.RagiumItems import hiiragi283.ragium.common.item.HTCrafterHammerItem import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider @@ -326,33 +327,33 @@ class RagiumModelProvider(output: FabricDataOutput) : FabricModelProvider(output addAll(RagiumContents.Armors.entries) addAll(RagiumContents.CircuitBoards.entries) addAll(RagiumContents.Circuits.entries) - addAll(RagiumContents.Foods.entries) - addAll(RagiumContents.Misc.entries) + addAll(RagiumItems.FOODS) + addAll(RagiumItems.MISC) - remove(RagiumContents.Foods.CHOCOLATE_APPLE) - remove(RagiumContents.Misc.EMPTY_FLUID_CUBE) - remove(RagiumContents.Misc.FILLED_FLUID_CUBE) - // remove(RagiumContents.Misc.OBLIVION_CUBE_SPAWN_EGG) - remove(RagiumContents.Misc.RAGI_ALLOY_COMPOUND) - remove(RagiumContents.Misc.SOLAR_PANEL) + remove(RagiumItems.CHOCOLATE_APPLE) + remove(RagiumItems.EMPTY_FLUID_CUBE) + remove(RagiumItems.FILLED_FLUID_CUBE) + // remove(RagiumItems.OBLIVION_CUBE_SPAWN_EGG) + remove(RagiumItems.RAGI_ALLOY_COMPOUND) + remove(RagiumItems.SOLAR_PANEL) }.map(ItemConvertible::asItem).forEach(::register) registerLayered( - RagiumContents.Misc.RAGI_ALLOY_COMPOUND.asItem(), + RagiumItems.RAGI_ALLOY_COMPOUND.asItem(), TextureMap.getId(Items.COPPER_INGOT), - TextureMap.getId(RagiumContents.Misc.RAGI_ALLOY_COMPOUND.asItem()), + TextureMap.getId(RagiumItems.RAGI_ALLOY_COMPOUND.asItem()), ) register( - RagiumContents.Misc.SOLAR_PANEL.asItem(), + RagiumItems.SOLAR_PANEL.asItem(), Models.GENERATED, TextureMap.layer0(RagiumAPI.id("block/solar_front")), ) registerLayered( - RagiumContents.Foods.CHOCOLATE_APPLE.asItem(), + RagiumItems.CHOCOLATE_APPLE.asItem(), TextureMap.getId(Items.APPLE), - TextureMap.getId(RagiumContents.Foods.CHOCOLATE_APPLE.asItem()), + TextureMap.getId(RagiumItems.CHOCOLATE_APPLE.asItem()), ) - register(RagiumContents.Misc.FILLED_FLUID_CUBE.asItem(), RagiumModels.FILLED_FLUID_CUBE) + register(RagiumItems.FILLED_FLUID_CUBE.asItem(), RagiumModels.FILLED_FLUID_CUBE) // elements /*RagiumContents.Element.entries.forEach { element: RagiumContents.Element -> register(element.clusterBlock.asItem(), Models.GENERATED, TextureMap.layer0(element.clusterBlock)) diff --git a/src/main/generated/assets/ragium/blockstates/advanced_multi_smelter.json b/src/main/generated/assets/ragium/blockstates/advanced_multi_smelter.json new file mode 100644 index 000000000..6a1cc1a7e --- /dev/null +++ b/src/main/generated/assets/ragium/blockstates/advanced_multi_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "ragium:block/dynamic_processor", + "y": 90 + }, + "facing=north": { + "model": "ragium:block/dynamic_processor" + }, + "facing=south": { + "model": "ragium:block/dynamic_processor", + "y": 180 + }, + "facing=west": { + "model": "ragium:block/dynamic_processor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/ragium/blockstates/basic_multi_smelter.json b/src/main/generated/assets/ragium/blockstates/basic_multi_smelter.json new file mode 100644 index 000000000..6a1cc1a7e --- /dev/null +++ b/src/main/generated/assets/ragium/blockstates/basic_multi_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "ragium:block/dynamic_processor", + "y": 90 + }, + "facing=north": { + "model": "ragium:block/dynamic_processor" + }, + "facing=south": { + "model": "ragium:block/dynamic_processor", + "y": 180 + }, + "facing=west": { + "model": "ragium:block/dynamic_processor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/ragium/blockstates/primitive_multi_smelter.json b/src/main/generated/assets/ragium/blockstates/primitive_multi_smelter.json new file mode 100644 index 000000000..6a1cc1a7e --- /dev/null +++ b/src/main/generated/assets/ragium/blockstates/primitive_multi_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "ragium:block/dynamic_processor", + "y": 90 + }, + "facing=north": { + "model": "ragium:block/dynamic_processor" + }, + "facing=south": { + "model": "ragium:block/dynamic_processor", + "y": 180 + }, + "facing=west": { + "model": "ragium:block/dynamic_processor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/ragium/lang/en_us.json b/src/main/generated/assets/ragium/lang/en_us.json index 710c5dcfb..e27381b17 100644 --- a/src/main/generated/assets/ragium/lang/en_us.json +++ b/src/main/generated/assets/ragium/lang/en_us.json @@ -232,6 +232,7 @@ "machine_type.ragium.grinder": "Grinder", "machine_type.ragium.metal_former": "Metal Former", "machine_type.ragium.mixer": "Mixer", + "machine_type.ragium.multi_smelter": "Multi Smelter", "machine_type.ragium.rock_generator": "Rock Generator", "machine_type.ragium.saw_mill": "Saw Mill", "machine_type.ragium.saw_mill.description": "Process Logs more efficiently", diff --git a/src/main/generated/assets/ragium/lang/ja_jp.json b/src/main/generated/assets/ragium/lang/ja_jp.json index 66198b93b..9e576d382 100644 --- a/src/main/generated/assets/ragium/lang/ja_jp.json +++ b/src/main/generated/assets/ragium/lang/ja_jp.json @@ -229,6 +229,7 @@ "machine_type.ragium.grinder": "粉砕機", "machine_type.ragium.metal_former": "金属加工機", "machine_type.ragium.mixer": "ミキサー", + "machine_type.ragium.multi_smelter": "並列精錬機", "machine_type.ragium.rock_generator": "岩石生成機", "machine_type.ragium.rock_generator.description": "岩石を生成する", "machine_type.ragium.saw_mill": "製材機", diff --git a/src/main/generated/assets/ragium/models/item/advanced_multi_smelter.json b/src/main/generated/assets/ragium/models/item/advanced_multi_smelter.json new file mode 100644 index 000000000..cea6957fc --- /dev/null +++ b/src/main/generated/assets/ragium/models/item/advanced_multi_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "ragium:block/dynamic_processor" +} \ No newline at end of file diff --git a/src/main/generated/assets/ragium/models/item/basic_multi_smelter.json b/src/main/generated/assets/ragium/models/item/basic_multi_smelter.json new file mode 100644 index 000000000..cea6957fc --- /dev/null +++ b/src/main/generated/assets/ragium/models/item/basic_multi_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "ragium:block/dynamic_processor" +} \ No newline at end of file diff --git a/src/main/generated/assets/ragium/models/item/primitive_multi_smelter.json b/src/main/generated/assets/ragium/models/item/primitive_multi_smelter.json new file mode 100644 index 000000000..cea6957fc --- /dev/null +++ b/src/main/generated/assets/ragium/models/item/primitive_multi_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "ragium:block/dynamic_processor" +} \ No newline at end of file diff --git a/src/main/generated/data/c/tags/item/dusts.json b/src/main/generated/data/c/tags/item/dusts.json index d10060e76..c7f2625d8 100644 --- a/src/main/generated/data/c/tags/item/dusts.json +++ b/src/main/generated/data/c/tags/item/dusts.json @@ -1,9 +1,5 @@ { "values": [ - "ragium:bee_wax", - "ragium:flour", - "ragium:minced_meat", - "ragium:pulp", { "id": "#c:dusts/aluminum", "required": false diff --git a/src/main/generated/data/ragium/advancement/recipes/misc/shaped/advanced_multi_smelter.json b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/advanced_multi_smelter.json new file mode 100644 index 000000000..9b2c0c34a --- /dev/null +++ b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/advanced_multi_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_item": { + "conditions": { + "items": [ + { + "items": "ragium:advanced_hull" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:shaped/advanced_multi_smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_the_item" + ] + ], + "rewards": { + "recipes": [ + "ragium:shaped/advanced_multi_smelter" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/ragium/advancement/recipes/misc/shaped/basic_multi_smelter.json b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/basic_multi_smelter.json new file mode 100644 index 000000000..29c1244e2 --- /dev/null +++ b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/basic_multi_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_item": { + "conditions": { + "items": [ + { + "items": "ragium:basic_hull" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:shaped/basic_multi_smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_the_item" + ] + ], + "rewards": { + "recipes": [ + "ragium:shaped/basic_multi_smelter" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/ragium/advancement/recipes/misc/shaped/primitive_multi_smelter.json b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/primitive_multi_smelter.json new file mode 100644 index 000000000..924121916 --- /dev/null +++ b/src/main/generated/data/ragium/advancement/recipes/misc/shaped/primitive_multi_smelter.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_item": { + "conditions": { + "items": [ + { + "items": "ragium:primitive_hull" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ragium:shaped/primitive_multi_smelter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_the_item" + ] + ], + "rewards": { + "recipes": [ + "ragium:shaped/primitive_multi_smelter" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/ragium/recipe/shaped/advanced_multi_smelter.json b/src/main/generated/data/ragium/recipe/shaped/advanced_multi_smelter.json new file mode 100644 index 000000000..cfa1d6a97 --- /dev/null +++ b/src/main/generated/data/ragium/recipe/shaped/advanced_multi_smelter.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "tag": "c:plates/refined_ragi_steel" + }, + "B": { + "item": "ragium:heart_of_the_nether" + }, + "C": { + "item": "ragium:advanced_hull" + }, + "D": { + "item": "ragium:heart_of_the_nether" + }, + "E": { + "tag": "c:plates/steel" + } + }, + "pattern": [ + "AAA", + "BCD", + "EEE" + ], + "result": { + "count": 1, + "id": "ragium:advanced_multi_smelter" + } +} \ No newline at end of file diff --git a/src/main/generated/data/ragium/recipe/shaped/basic_multi_smelter.json b/src/main/generated/data/ragium/recipe/shaped/basic_multi_smelter.json new file mode 100644 index 000000000..9ca014d2c --- /dev/null +++ b/src/main/generated/data/ragium/recipe/shaped/basic_multi_smelter.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "tag": "c:plates/ragi_steel" + }, + "B": { + "item": "minecraft:ghast_tear" + }, + "C": { + "item": "ragium:basic_hull" + }, + "D": { + "item": "minecraft:ghast_tear" + }, + "E": { + "tag": "c:plates/iron" + } + }, + "pattern": [ + "AAA", + "BCD", + "EEE" + ], + "result": { + "count": 1, + "id": "ragium:basic_multi_smelter" + } +} \ No newline at end of file diff --git a/src/main/generated/data/ragium/recipe/shaped/primitive_multi_smelter.json b/src/main/generated/data/ragium/recipe/shaped/primitive_multi_smelter.json new file mode 100644 index 000000000..d1ad31424 --- /dev/null +++ b/src/main/generated/data/ragium/recipe/shaped/primitive_multi_smelter.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "tag": "c:plates/ragi_alloy" + }, + "B": { + "item": "minecraft:blaze_powder" + }, + "C": { + "item": "ragium:primitive_hull" + }, + "D": { + "item": "minecraft:blaze_powder" + }, + "E": { + "tag": "c:plates/copper" + } + }, + "pattern": [ + "AAA", + "BCD", + "EEE" + ], + "result": { + "count": 1, + "id": "ragium:primitive_multi_smelter" + } +} \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/api/RagiumAPI.kt b/src/main/kotlin/hiiragi283/ragium/api/RagiumAPI.kt index aa973c12d..17246685b 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/RagiumAPI.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/RagiumAPI.kt @@ -3,6 +3,7 @@ package hiiragi283.ragium.api import hiiragi283.ragium.api.machine.HTMachine import hiiragi283.ragium.api.machine.HTMachineRegistry import hiiragi283.ragium.api.machine.HTMachineTier +import hiiragi283.ragium.api.material.HTMaterialRegistry import hiiragi283.ragium.common.InternalRagiumAPI import hiiragi283.ragium.common.advancement.HTBuiltMachineCriterion import net.fabricmc.loader.api.FabricLoader @@ -60,6 +61,7 @@ interface RagiumAPI { val config: Config val machineRegistry: HTMachineRegistry + val materialRegistry: HTMaterialRegistry fun createBuiltMachineCriterion(type: HTMachine, minTier: HTMachineTier): AdvancementCriterion diff --git a/src/main/kotlin/hiiragi283/ragium/api/RagiumPlugin.kt b/src/main/kotlin/hiiragi283/ragium/api/RagiumPlugin.kt index df0e72891..b77a3147e 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/RagiumPlugin.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/RagiumPlugin.kt @@ -1,9 +1,11 @@ package hiiragi283.ragium.api -import hiiragi283.ragium.api.machine.HTMachine +import hiiragi283.ragium.api.content.RagiumMaterials import hiiragi283.ragium.api.machine.HTMachineKey import hiiragi283.ragium.api.machine.HTMachineTypeNew +import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.property.HTMutablePropertyHolder +import java.util.function.BiConsumer import java.util.function.Predicate @JvmDefaultWithCompatibility @@ -16,42 +18,28 @@ interface RagiumPlugin { fun shouldLoad(): Boolean = true - fun registerMachineType(register: MachineRegister) {} + fun registerMachineType(register: BiConsumer) {} - fun setupCommonMachineProperties(helper: PropertyHelper) {} + fun registerMaterial(register: BiConsumer) {} - fun setupClientMachineProperties(helper: PropertyHelper) {} + fun setupCommonMachineProperties(helper: PropertyHelper) {} - fun afterRagiumInit(instance: RagiumAPI) + fun setupClientMachineProperties(helper: PropertyHelper) {} - // MachineRegister // + fun setupCommonMaterialProperties(helper: PropertyHelper) {} - class MachineRegister(private val register: (HTMachineKey, HTMachineTypeNew) -> Unit) { - fun registerConsumer(key: HTMachineKey) { - register(key, HTMachineTypeNew.CONSUMER) - } + fun setupClientMaterialProperties(helper: PropertyHelper) {} - fun registerGenerator(key: HTMachineKey) { - register(key, HTMachineTypeNew.GENERATOR) - } - - fun registerProcessor(key: HTMachineKey) { - register(key, HTMachineTypeNew.PROCESSOR) - } - } + fun afterRagiumInit(instance: RagiumAPI) // PropertyHelper // - class PropertyHelper(private val key: HTMachineKey, private val properties: HTMutablePropertyHolder) { - fun modify(type: HTMachine, builderAction: HTMutablePropertyHolder.() -> Unit) { - modify(type.key, builderAction) - } - - fun modify(key: HTMachineKey, builderAction: HTMutablePropertyHolder.() -> Unit) { + class PropertyHelper(private val key: T, private val properties: HTMutablePropertyHolder) { + fun modify(key: T, builderAction: HTMutablePropertyHolder.() -> Unit) { modify({ it == key }, builderAction) } - fun modify(filter: Predicate, builderAction: HTMutablePropertyHolder.() -> Unit) { + fun modify(filter: Predicate, builderAction: HTMutablePropertyHolder.() -> Unit) { if (filter.test(this.key)) { properties.builderAction() } diff --git a/src/main/kotlin/hiiragi283/ragium/api/content/HTContent.kt b/src/main/kotlin/hiiragi283/ragium/api/content/HTContent.kt index 5f225925c..533049841 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/content/HTContent.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/content/HTContent.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.content import hiiragi283.ragium.api.data.HTLangType import hiiragi283.ragium.api.machine.HTMachineTier -import hiiragi283.ragium.api.tags.HTTagPrefix +import hiiragi283.ragium.api.material.HTTagPrefix import net.minecraft.item.Item import net.minecraft.item.ItemConvertible import net.minecraft.registry.tag.TagKey diff --git a/src/main/kotlin/hiiragi283/ragium/api/content/RagiumMaterials.kt b/src/main/kotlin/hiiragi283/ragium/api/content/RagiumMaterials.kt index 31ced31df..5df474d99 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/content/RagiumMaterials.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/content/RagiumMaterials.kt @@ -1,8 +1,8 @@ package hiiragi283.ragium.api.content import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.tags.HTTagPrefix -import hiiragi283.ragium.api.tags.HTTagPrefixes +import hiiragi283.ragium.api.material.HTTagPrefix +import hiiragi283.ragium.api.material.HTTagPrefixes import hiiragi283.ragium.common.RagiumContents import net.minecraft.block.Block import net.minecraft.item.ArmorItem diff --git a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTMachineRecipeJsonBuilder.kt b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTMachineRecipeJsonBuilder.kt index b21298ec8..83486a6eb 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTMachineRecipeJsonBuilder.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTMachineRecipeJsonBuilder.kt @@ -3,12 +3,15 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.content.HTContent import hiiragi283.ragium.api.content.RagiumMaterials -import hiiragi283.ragium.api.machine.* +import hiiragi283.ragium.api.machine.HTMachine +import hiiragi283.ragium.api.machine.HTMachineDefinition +import hiiragi283.ragium.api.machine.HTMachineKey +import hiiragi283.ragium.api.machine.HTMachineTier +import hiiragi283.ragium.api.material.HTTagPrefix import hiiragi283.ragium.api.recipe.HTIngredient import hiiragi283.ragium.api.recipe.HTMachineRecipe import hiiragi283.ragium.api.recipe.HTRecipeResult -import hiiragi283.ragium.api.tags.HTTagPrefix -import hiiragi283.ragium.common.RagiumContents +import hiiragi283.ragium.common.init.RagiumFluids import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants import net.minecraft.component.ComponentChanges import net.minecraft.data.server.recipe.CraftingRecipeJsonBuilder @@ -20,7 +23,6 @@ import net.minecraft.item.ItemStack import net.minecraft.registry.Registries import net.minecraft.registry.tag.TagKey import net.minecraft.util.Identifier -import java.util.* class HTMachineRecipeJsonBuilder private constructor( private val key: HTMachineKey, @@ -44,7 +46,7 @@ class HTMachineRecipeJsonBuilder private constructor( .let { RagiumAPI.id(it) } @JvmStatic - fun createRecipeId(fluid: RagiumContents.Fluids): Identifier = createRecipeId(fluid.value) + fun createRecipeId(fluid: RagiumFluids): Identifier = createRecipeId(fluid.value) } private val itemInputs: MutableList = mutableListOf() @@ -72,7 +74,7 @@ class HTMachineRecipeJsonBuilder private constructor( fluidInputs.add(HTIngredient.ofFluid(fluid, amount)) } - fun fluidInput(fluid: RagiumContents.Fluids, amount: Long = FluidConstants.BUCKET): HTMachineRecipeJsonBuilder = apply { + fun fluidInput(fluid: RagiumFluids, amount: Long = FluidConstants.BUCKET): HTMachineRecipeJsonBuilder = apply { fluidInputs.add(HTIngredient.ofFluid(fluid.value, amount)) } @@ -110,7 +112,7 @@ class HTMachineRecipeJsonBuilder private constructor( } fun fluidOutput( - fluid: RagiumContents.Fluids, + fluid: RagiumFluids, amount: Long = FluidConstants.BUCKET, components: ComponentChanges = ComponentChanges.EMPTY, ): HTMachineRecipeJsonBuilder = apply { @@ -155,18 +157,18 @@ class HTMachineRecipeJsonBuilder private constructor( offerTo(exporter, createRecipeId(output).withSuffixedPath(suffix)) } - fun offerTo(exporter: RecipeExporter, output: RagiumContents.Fluids, suffix: String = "") { + fun offerTo(exporter: RecipeExporter, output: RagiumFluids, suffix: String = "") { offerTo(exporter, createRecipeId(output).withSuffixedPath(suffix)) } fun offerTo(exporter: RecipeExporter, recipeId: Identifier) { val prefix = "${key.id.path}/" val prefixedId: Identifier = recipeId.withPrefixedPath(prefix) - val recipe: HTMachineRecipe = HTMachineRecipe.createRecipe( + val recipe = HTMachineRecipe( HTMachineDefinition(key, tier), itemInputs, fluidInputs, - Optional.ofNullable(catalyst), + catalyst, itemOutputs, fluidOutputs, ) diff --git a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapedRecipeJsonBuilder.kt b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapedRecipeJsonBuilder.kt index e0a21bee1..672347482 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapedRecipeJsonBuilder.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapedRecipeJsonBuilder.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.content.HTContent import hiiragi283.ragium.api.content.RagiumMaterials -import hiiragi283.ragium.api.tags.HTTagPrefix +import hiiragi283.ragium.api.material.HTTagPrefix import net.minecraft.advancement.Advancement import net.minecraft.advancement.AdvancementCriterion import net.minecraft.advancement.AdvancementRequirements diff --git a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapelessRecipeJsonBuilder.kt b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapelessRecipeJsonBuilder.kt index 50e08a49e..fb5fa84c9 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapelessRecipeJsonBuilder.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/data/recipe/HTShapelessRecipeJsonBuilder.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.content.HTContent import hiiragi283.ragium.api.content.RagiumMaterials -import hiiragi283.ragium.api.tags.HTTagPrefix +import hiiragi283.ragium.api.material.HTTagPrefix import net.minecraft.advancement.Advancement import net.minecraft.advancement.AdvancementCriterion import net.minecraft.advancement.AdvancementRequirements diff --git a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumTransferExtensions.kt b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumTransferExtensions.kt index 8302ebf4e..051374c4a 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumTransferExtensions.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumTransferExtensions.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.extension -import hiiragi283.ragium.api.fluid.HTAmountedFluid import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant import net.fabricmc.fabric.api.transfer.v1.storage.SlottedStorage @@ -59,8 +58,8 @@ fun > Storage.extract(resourceAmount: ResourceAmount SingleSlotStorage.resourceAmount: ResourceAmount get() = ResourceAmount(resource, amount) -val SingleSlotStorage.amountedFluid: HTAmountedFluid - get() = HTAmountedFluid(resource.fluid, amount) +val SingleSlotStorage.amountedFluid: Pair + get() = resource.fluid to amount fun SlottedStorage.getSlotOrNull(slot: Int): SingleSlotStorage? = if (slot in 0..slotCount) getSlot(slot) else null diff --git a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumUtils.kt b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumUtils.kt index cacaa50b5..1ee3a6a21 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumUtils.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumUtils.kt @@ -1,11 +1,11 @@ package hiiragi283.ragium.api.extension import com.google.common.collect.HashBasedTable -import hiiragi283.ragium.api.machine.HTMachineType import hiiragi283.ragium.api.machine.block.HTMachineBlockEntityBase import hiiragi283.ragium.api.util.HTTable import hiiragi283.ragium.api.util.HTWrappedTable import net.fabricmc.api.EnvType +import net.fabricmc.fabric.api.transfer.v1.item.InventoryStorage import net.fabricmc.loader.api.FabricLoader import net.fabricmc.loader.api.metadata.ModMetadata import net.minecraft.block.entity.BlockEntity @@ -114,6 +114,13 @@ fun openEnderChest(world: World, player: PlayerEntity) { ) } +fun Inventory.modifyStack(slot: Int, mapping: (ItemStack) -> ItemStack) { + val stackIn: ItemStack = getStack(slot) + setStack(slot, mapping(stackIn)) +} + +fun Inventory.toStorage(side: Direction?): InventoryStorage = InventoryStorage.of(this, side) + fun Inventory.getStackOrNull(slot: Int): ItemStack? = if (slot in 0..size()) getStack(slot) else null // ServiceLoader // @@ -148,8 +155,6 @@ fun ScreenHandlerContext.getBlockEntity(): BlockEntity? = getOrNull(World::getBl fun ScreenHandlerContext.getInventory(size: Int): Inventory = getBlockEntity() as? Inventory ?: SimpleInventory(size) -fun ScreenHandlerContext.getInventory(typeSize: HTMachineType.Size): Inventory = getInventory(typeSize.invSize) - fun ScreenHandlerContext.getMachine(): HTMachineBlockEntityBase? = getBlockEntity() as? HTMachineBlockEntityBase // Table // diff --git a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumWorldExtensions.kt b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumWorldExtensions.kt index a2eff6f3f..691e8e7d1 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumWorldExtensions.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/extension/RagiumWorldExtensions.kt @@ -8,9 +8,9 @@ import hiiragi283.ragium.api.world.HTBackpackManager import hiiragi283.ragium.api.world.HTDataDriveManager import hiiragi283.ragium.api.world.HTEnergyNetwork import hiiragi283.ragium.api.world.HTHardModeManager -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.block.entity.HTMetaMachineBlockEntity import hiiragi283.ragium.common.init.RagiumComponentTypes +import hiiragi283.ragium.common.init.RagiumItems import net.minecraft.enchantment.Enchantment import net.minecraft.entity.Entity import net.minecraft.entity.ItemEntity @@ -105,7 +105,7 @@ fun openBackpackScreen(world: WorldAccess, player: PlayerEntity, color: DyeColor player.openHandledScreen( SimpleNamedScreenHandlerFactory({ syncId: Int, playerInv: PlayerInventory, _: PlayerEntity -> GenericContainerScreenHandler.createGeneric9x6(syncId, playerInv, inventory) - }, RagiumContents.Misc.BACKPACK.value.name), + }, RagiumItems.BACKPACK.name), ) player.playSound(SoundEvents.BLOCK_VAULT_OPEN_SHUTTER, 1.0f, 1.0f) } diff --git a/src/main/kotlin/hiiragi283/ragium/api/fluid/HTAmountedFluid.kt b/src/main/kotlin/hiiragi283/ragium/api/fluid/HTAmountedFluid.kt deleted file mode 100644 index faa89843c..000000000 --- a/src/main/kotlin/hiiragi283/ragium/api/fluid/HTAmountedFluid.kt +++ /dev/null @@ -1,13 +0,0 @@ -package hiiragi283.ragium.api.fluid - -import net.minecraft.fluid.Fluid -import net.minecraft.fluid.Fluids - -data class HTAmountedFluid(val fluid: Fluid, val amount: Long) { - companion object { - @JvmField - val EMPTY = HTAmountedFluid(Fluids.EMPTY, 0) - } - - val isEmpty: Boolean = fluid == Fluids.EMPTY || amount <= 0 -} diff --git a/src/main/kotlin/hiiragi283/ragium/api/fluid/HTFluidDrinkingHandlerRegistry.kt b/src/main/kotlin/hiiragi283/ragium/api/fluid/HTFluidDrinkingHandlerRegistry.kt index 266bb3f36..76bb39055 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/fluid/HTFluidDrinkingHandlerRegistry.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/fluid/HTFluidDrinkingHandlerRegistry.kt @@ -1,6 +1,6 @@ package hiiragi283.ragium.api.fluid -import hiiragi283.ragium.common.RagiumContents +import hiiragi283.ragium.common.init.RagiumFluids import net.minecraft.entity.LivingEntity import net.minecraft.fluid.Fluid import net.minecraft.item.ItemStack @@ -11,7 +11,7 @@ object HTFluidDrinkingHandlerRegistry { private val registry: MutableMap = mutableMapOf() @JvmStatic - fun register(fluid: RagiumContents.Fluids, handler: HTFluidDrinkingHandler) { + fun register(fluid: RagiumFluids, handler: HTFluidDrinkingHandler) { register(fluid.value, handler) } diff --git a/src/main/kotlin/hiiragi283/ragium/api/inventory/HTSimpleInventory.kt b/src/main/kotlin/hiiragi283/ragium/api/inventory/HTSimpleInventory.kt index 46ec86828..68ebecc23 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/inventory/HTSimpleInventory.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/inventory/HTSimpleInventory.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.api.inventory import com.mojang.serialization.Codec import hiiragi283.ragium.common.init.RagiumNetworks -import net.fabricmc.fabric.api.transfer.v1.item.InventoryStorage import net.minecraft.entity.player.PlayerEntity import net.minecraft.inventory.Inventories import net.minecraft.inventory.Inventory @@ -14,7 +13,6 @@ import net.minecraft.registry.RegistryWrapper import net.minecraft.server.network.ServerPlayerEntity import net.minecraft.util.collection.DefaultedList import net.minecraft.util.math.BlockPos -import net.minecraft.util.math.Direction open class HTSimpleInventory : Inventory { companion object { @@ -55,19 +53,12 @@ open class HTSimpleInventory : Inventory { Inventories.readNbt(nbt, stacks, lookup) } - fun modifyStack(slot: Int, mapping: (ItemStack) -> ItemStack) { - val stackIn: ItemStack = getStack(slot) - setStack(slot, mapping(stackIn)) - } - fun sendS2CPacket(player: ServerPlayerEntity, pos: BlockPos) { stacks.forEachIndexed { slot: Int, stack: ItemStack -> RagiumNetworks.sendItemSync(player, pos, slot, stack) } } - fun wrapStorage(side: Direction?): InventoryStorage = InventoryStorage.of(this, side) - // Inventory // override fun clear() { diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineRegistry.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineRegistry.kt index d58479c75..902be7da2 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineRegistry.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineRegistry.kt @@ -14,6 +14,4 @@ class HTMachineRegistry( fun getType(key: HTMachineKey): HTMachineTypeNew = checkNotNull(types[key]) { "Invalid machine key; $key found!" } fun getProperty(key: HTMachineKey): HTPropertyHolder = properties.getOrDefault(key, HTPropertyHolder.Empty) - - internal fun copy(map: Map): HTMachineRegistry = HTMachineRegistry(types, blocks, map) } diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineTier.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineTier.kt index 80095df3a..964f5919b 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineTier.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineTier.kt @@ -36,7 +36,7 @@ enum class HTMachineTier( "primitive_%s", "Primitive", "簡易", - 320, + 160, 200, Rarity.COMMON, ), @@ -44,7 +44,7 @@ enum class HTMachineTier( "basic_%s", "Basic", "基本", - 1280, + 640, 150, Rarity.UNCOMMON, ), @@ -52,7 +52,7 @@ enum class HTMachineTier( "advanced_%s", "Advanced", "発展", - 5120, + 2560, 100, Rarity.RARE, ), @@ -73,7 +73,8 @@ enum class HTMachineTier( .build() } - val bucketUnit: Long = recipeCost / 40 + val smelterMulti: Int = (recipeCost / 20).toInt() + val bucketUnit: Long = recipeCost / 20 val tankCapacity: Long = FluidConstants.BUCKET * bucketUnit val translationKey: String = "machine_tier.ragium.${asString()}" @@ -139,6 +140,10 @@ enum class HTMachineTier( ADVANCED -> RagiumContents.StorageBlocks.REFINED_RAGI_STEEL } + fun canProcess(world: World): Boolean = canProcess(world.energyNetwork) + + fun canProcess(network: HTEnergyNetwork?): Boolean = network?.amount?.let { it >= recipeCost } ?: false + fun consumerEnergy(world: World) { world.energyNetwork?.let { network: HTEnergyNetwork -> useTransaction { transaction: Transaction -> diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineType.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineType.kt index 6637219a6..aaad96c6d 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineType.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/HTMachineType.kt @@ -1,31 +1,24 @@ package hiiragi283.ragium.api.machine import com.mojang.serialization.Codec -import hiiragi283.ragium.api.extension.codecOf -import hiiragi283.ragium.api.extension.packetCodecOf -import hiiragi283.ragium.api.inventory.HTSidedInventory -import hiiragi283.ragium.api.inventory.HTStorageBuilder -import hiiragi283.ragium.api.inventory.HTStorageIO -import hiiragi283.ragium.api.inventory.HTStorageSide import io.netty.buffer.ByteBuf import net.minecraft.component.ComponentType -import net.minecraft.network.RegistryByteBuf import net.minecraft.network.codec.PacketCodec import net.minecraft.util.StringIdentifiable -sealed class HTMachineType : HTMachine { +class HTMachineType(override val key: HTMachineKey) : HTMachine { companion object { @JvmField val CODEC: Codec = HTMachineKey.CODEC.xmap( - HTMachineType::Processor, + ::HTMachineType, HTMachineType::key, ) @JvmField val PACKET_CODEC: PacketCodec = HTMachineKey.PACKET_CODEC.xmap( - HTMachineType::Processor, + ::HTMachineType, HTMachineType::key, ) @@ -39,53 +32,13 @@ sealed class HTMachineType : HTMachine { override fun toString(): String = "MachineType[${key.id}]" - // Consumer // - - class Consumer(override val key: HTMachineKey) : HTMachineType() - - // Generator // - - class Generator(override val key: HTMachineKey) : HTMachineType() - - // Processor // - - class Processor(override val key: HTMachineKey) : HTMachineType() - // Size // enum class Size(val invSize: Int) : StringIdentifiable { - SIMPLE(5) { - override fun createInventory(): HTSidedInventory = HTStorageBuilder(5) - .set(0, HTStorageIO.INPUT, HTStorageSide.ANY) - .set(1, HTStorageIO.INPUT, HTStorageSide.ANY) - .set(2, HTStorageIO.INTERNAL, HTStorageSide.NONE) - .set(3, HTStorageIO.OUTPUT, HTStorageSide.ANY) - .set(4, HTStorageIO.OUTPUT, HTStorageSide.ANY) - .buildSided() - }, - LARGE(7) { - override fun createInventory(): HTSidedInventory = HTStorageBuilder(7) - .set(0, HTStorageIO.INPUT, HTStorageSide.ANY) - .set(1, HTStorageIO.INPUT, HTStorageSide.ANY) - .set(2, HTStorageIO.INPUT, HTStorageSide.ANY) - .set(3, HTStorageIO.INTERNAL, HTStorageSide.NONE) - .set(4, HTStorageIO.OUTPUT, HTStorageSide.ANY) - .set(5, HTStorageIO.OUTPUT, HTStorageSide.ANY) - .set(6, HTStorageIO.OUTPUT, HTStorageSide.ANY) - .buildSided() - }, + SIMPLE(5), + LARGE(7), ; - companion object { - @JvmField - val CODEC: Codec = codecOf(entries) - - @JvmField - val PACKET_CODEC: PacketCodec = packetCodecOf(entries) - } - - abstract fun createInventory(): HTSidedInventory - override fun asString(): String = name.lowercase() } } diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTConsumerBlockEntityBase.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTConsumerBlockEntityBase.kt index cc8c8e655..24deaf684 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTConsumerBlockEntityBase.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTConsumerBlockEntityBase.kt @@ -1,6 +1,5 @@ package hiiragi283.ragium.api.machine.block -import hiiragi283.ragium.api.extension.energyNetwork import net.minecraft.block.BlockState import net.minecraft.block.entity.BlockEntityType import net.minecraft.util.math.BlockPos @@ -9,8 +8,7 @@ import net.minecraft.world.World abstract class HTConsumerBlockEntityBase(type: BlockEntityType<*>, pos: BlockPos, state: BlockState) : HTMachineBlockEntityBase(type, pos, state) { override fun tickSecond(world: World, pos: BlockPos, state: BlockState) { - val energyRequest: Boolean = world.energyNetwork?.amount?.let { it >= tier.recipeCost } ?: false - if (energyRequest) { + if (tier.canProcess(world)) { if (consumeEnergy(world, pos)) { tier.consumerEnergy(world) } diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTMachineBlockEntityBase.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTMachineBlockEntityBase.kt index 7204be7ac..d5233a7cf 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTMachineBlockEntityBase.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTMachineBlockEntityBase.kt @@ -38,12 +38,18 @@ abstract class HTMachineBlockEntityBase(type: BlockEntityType<*>, pos: BlockPos, abstract var key: HTMachineKey protected set var tier: HTMachineTier = HTMachineTier.PRIMITIVE - protected set + protected set(value) { + val old: HTMachineTier = field + field = value + onTierUpdated(old, value) + } val definition: HTMachineDefinition get() = HTMachineDefinition(key, tier) val packet: HTMachinePacket get() = HTMachinePacket(key, tier, pos) + open fun onTierUpdated(oldTier: HTMachineTier, newTier: HTMachineTier) {} + override fun writeNbt(nbt: NbtCompound, wrapperLookup: RegistryWrapper.WrapperLookup) { super.writeNbt(nbt, wrapperLookup) nbt.putMachineKey(MACHINE_KEY, key) diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTProcessorBlockEntityBase.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTProcessorBlockEntityBase.kt new file mode 100644 index 000000000..485a7acfe --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/block/HTProcessorBlockEntityBase.kt @@ -0,0 +1,19 @@ +package hiiragi283.ragium.api.machine.block + +import net.minecraft.block.BlockState +import net.minecraft.block.entity.BlockEntityType +import net.minecraft.util.math.BlockPos +import net.minecraft.world.World + +abstract class HTProcessorBlockEntityBase(type: BlockEntityType<*>, pos: BlockPos, state: BlockState) : + HTMachineBlockEntityBase(type, pos, state) { + override fun tickSecond(world: World, pos: BlockPos, state: BlockState) { + if (tier.canProcess(world)) { + if (processRecipe(world, pos)) { + tier.consumerEnergy(world) + } + } + } + + abstract fun processRecipe(world: World, pos: BlockPos): Boolean +} diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachinePropertyKeys.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachinePropertyKeys.kt index 548d6fd46..3060c058f 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachinePropertyKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachinePropertyKeys.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.api.machine.property import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.machine.HTMachineType import hiiragi283.ragium.api.machine.block.HTMachineEntityFactory import hiiragi283.ragium.api.property.HTPropertyKey import net.minecraft.util.DyeColor @@ -14,39 +13,35 @@ import net.minecraft.world.World object HTMachinePropertyKeys { @JvmField val MACHINE_FACTORY: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("machine_factory")) + HTPropertyKey.ofSimple(RagiumAPI.id("machine_factory")) @JvmField val TOOLTIP_BUILDER: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("tooltip_builder")) + HTPropertyKey.ofSimple(RagiumAPI.id("tooltip_builder")) @JvmField val VOXEL_SHAPE: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("voxel_shape")) + HTPropertyKey.ofSimple(RagiumAPI.id("voxel_shape")) // Generator // @JvmField val GENERATOR_COLOR: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("generator_color")) + HTPropertyKey.ofSimple(RagiumAPI.id("generator_color")) @JvmField val GENERATOR_PREDICATE: HTPropertyKey.Defaulted<(World, BlockPos) -> Boolean> = - HTPropertyKey.Defaulted(RagiumAPI.id("generator_predicate")) { _: World, _: BlockPos -> false } + HTPropertyKey.ofDefaulted(RagiumAPI.id("generator_predicate")) { _: World, _: BlockPos -> false } // Processor // @JvmField val FRONT_TEX: HTPropertyKey.Defaulted<(Identifier) -> Identifier> = - HTPropertyKey.Defaulted( + HTPropertyKey.ofDefaulted( RagiumAPI.id("front_tex"), ) { id: Identifier -> id.withPath { "block/processor/$it" } } @JvmField val FRONT_MAPPER: HTPropertyKey.Defaulted<(Direction) -> Direction> = - HTPropertyKey.Defaulted(RagiumAPI.id("front_mapper"), value = { it }) - - @JvmField - val RECIPE_SIZE: HTPropertyKey.Simple = - HTPropertyKey.Simple(RagiumAPI.id("recipe_size")) + HTPropertyKey.ofDefaulted(RagiumAPI.id("front_mapper"), value = { it }) } diff --git a/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachineTooltipAppender.kt b/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachineTooltipAppender.kt index 8a6a01bb1..1ab40f7c2 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachineTooltipAppender.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/machine/property/HTMachineTooltipAppender.kt @@ -1,35 +1,14 @@ package hiiragi283.ragium.api.machine.property -import hiiragi283.ragium.api.extension.intText -import hiiragi283.ragium.api.extension.longText import hiiragi283.ragium.api.machine.HTMachine import hiiragi283.ragium.api.machine.HTMachineTier -import hiiragi283.ragium.api.machine.HTMachineType -import hiiragi283.ragium.common.init.RagiumTranslationKeys import net.minecraft.text.Text -import net.minecraft.util.Formatting fun interface HTMachineTooltipAppender { companion object { @JvmField val DEFAULT_PROCESSOR = HTMachineTooltipAppender { consumer: (Text) -> Unit, machine: HTMachine, tier: HTMachineTier -> - val sizeType: HTMachineType.Size = - machine.asProperties()[HTMachinePropertyKeys.RECIPE_SIZE] ?: return@HTMachineTooltipAppender - consumer( - Text - .translatable( - RagiumTranslationKeys.MACHINE_SLOT_COUNTS, - intText(sizeType.invSize / 2).formatted(Formatting.YELLOW), - ).formatted(Formatting.GRAY), - ) - consumer( - Text - .translatable( - RagiumTranslationKeys.MACHINE_TANK_CAPACITY, - longText(tier.bucketUnit).formatted(Formatting.YELLOW), - ).formatted(Formatting.GRAY), - ) } } diff --git a/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialKey.kt b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialKey.kt new file mode 100644 index 000000000..b47b20483 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialKey.kt @@ -0,0 +1,45 @@ +package hiiragi283.ragium.api.material + +import com.mojang.serialization.Codec +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.property.HTPropertyHolder +import io.netty.buffer.ByteBuf +import net.minecraft.component.ComponentType +import net.minecraft.network.codec.PacketCodec +import net.minecraft.network.codec.PacketCodecs +import net.minecraft.text.MutableText +import net.minecraft.text.Text + +class HTMaterialKey private constructor(val name: String) : Comparable { + companion object { + private val instances: MutableMap = mutableMapOf() + + @JvmField + val CODEC: Codec = Codec.STRING.xmap(Companion::of, HTMaterialKey::name) + + @JvmField + val PACKET_CODEC: PacketCodec = + PacketCodecs.STRING.xmap(Companion::of, HTMaterialKey::name) + + @JvmField + val COMPONENT_TYPE: ComponentType = + ComponentType + .builder() + .codec(CODEC) + .packetCodec(PACKET_CODEC) + .build() + + @JvmStatic + fun of(name: String): HTMaterialKey = instances.computeIfAbsent(name, ::HTMaterialKey) + } + + val translationKey: String = "material.${RagiumAPI.MOD_ID}.$name" + val text: MutableText + get() = Text.translatable(translationKey) + + fun asProperties(): HTPropertyHolder = RagiumAPI.getInstance().materialRegistry.getProperty(this) + + // Comparable // + + override fun compareTo(other: HTMaterialKey): Int = name.compareTo(other.name) +} diff --git a/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialPropertyKeys.kt b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialPropertyKeys.kt new file mode 100644 index 000000000..21908cb05 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialPropertyKeys.kt @@ -0,0 +1,21 @@ +package hiiragi283.ragium.api.material + +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.HTLangType +import hiiragi283.ragium.api.property.HTPropertyKey +import net.minecraft.util.Rarity + +object HTMaterialPropertyKeys { + @JvmField + val RARITY: HTPropertyKey.Defaulted = + HTPropertyKey.ofDefaulted(RagiumAPI.id("rarity")) { Rarity.COMMON } + + @JvmField + val TRANSLATED_NAME: HTPropertyKey.Defaulted<(HTLangType) -> String> = + HTPropertyKey.ofDefaulted(RagiumAPI.id("en_name"), value = { + when (it) { + HTLangType.EN_US -> "UNDEFINED" + HTLangType.JA_JP -> "未定義" + } + }) +} diff --git a/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialRegistry.kt b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialRegistry.kt new file mode 100644 index 000000000..a5f4edb5c --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/api/material/HTMaterialRegistry.kt @@ -0,0 +1,16 @@ +package hiiragi283.ragium.api.material + +import hiiragi283.ragium.api.content.RagiumMaterials +import hiiragi283.ragium.api.property.HTPropertyHolder +import hiiragi283.ragium.api.util.HTTable +import net.minecraft.item.Item + +class HTMaterialRegistry( + val types: Map, + val items: HTTable, + val properties: Map, +) { + operator fun contains(key: HTMaterialKey): Boolean = key in types + + fun getProperty(key: HTMaterialKey): HTPropertyHolder = properties.getOrDefault(key, HTPropertyHolder.Empty) +} diff --git a/src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefix.kt b/src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefix.kt similarity index 81% rename from src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefix.kt rename to src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefix.kt index e6983d61e..608b1b9b8 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefix.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefix.kt @@ -1,5 +1,6 @@ -package hiiragi283.ragium.api.tags +package hiiragi283.ragium.api.material +import hiiragi283.ragium.api.RagiumAPI import net.fabricmc.fabric.api.tag.convention.v2.TagUtil import net.minecraft.item.Item import net.minecraft.registry.RegistryKeys @@ -26,5 +27,8 @@ class HTTagPrefix private constructor(private val prefix: String) { fun createTag(value: StringIdentifiable): TagKey = TagKey.of(RegistryKeys.ITEM, commonId("$prefix/${value.asString()}")) + fun createId(key: HTMaterialKey, namespace: String = RagiumAPI.MOD_ID): Identifier = + Identifier.of(namespace, "${key.name}_${prefix.removeSuffix("s")}") + override fun toString(): String = "HTTagPrefix[$prefix]" } diff --git a/src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefixes.kt b/src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefixes.kt similarity index 93% rename from src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefixes.kt rename to src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefixes.kt index 3142b352d..dcdff1225 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/tags/HTTagPrefixes.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/material/HTTagPrefixes.kt @@ -1,4 +1,4 @@ -package hiiragi283.ragium.api.tags +package hiiragi283.ragium.api.material object HTTagPrefixes { @JvmField diff --git a/src/main/kotlin/hiiragi283/ragium/api/property/HTPropertyKey.kt b/src/main/kotlin/hiiragi283/ragium/api/property/HTPropertyKey.kt index 83148b869..ffbe86f0e 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/property/HTPropertyKey.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/property/HTPropertyKey.kt @@ -3,6 +3,17 @@ package hiiragi283.ragium.api.property import net.minecraft.util.Identifier sealed class HTPropertyKey(val id: Identifier) { + companion object { + @JvmStatic + fun ofSimple(id: Identifier): Simple = Simple(id) + + @JvmStatic + fun ofDefaulted(id: Identifier, value: T): Defaulted = ofDefaulted(id) { value } + + @JvmStatic + fun ofDefaulted(id: Identifier, initializer: () -> T): Defaulted = Defaulted(id, initializer) + } + @Suppress("UNCHECKED_CAST") fun cast(obj: Any?): T? = obj as? T @@ -15,8 +26,6 @@ sealed class HTPropertyKey(val id: Identifier) { // Defaulted // class Defaulted(id: Identifier, val initializer: () -> T) : HTPropertyKey(id) { - constructor(id: Identifier, value: T) : this(id, { value }) - fun getDefaultValue(): T = initializer() } } diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTFurnaceRecipeProcessor.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTFurnaceRecipeProcessor.kt new file mode 100644 index 000000000..d8ed4f711 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTFurnaceRecipeProcessor.kt @@ -0,0 +1,38 @@ +package hiiragi283.ragium.api.recipe + +import hiiragi283.ragium.api.extension.modifyStack +import net.minecraft.inventory.Inventory +import net.minecraft.item.ItemStack +import net.minecraft.recipe.AbstractCookingRecipe +import net.minecraft.recipe.RecipeEntry +import net.minecraft.recipe.RecipeType +import net.minecraft.recipe.input.SingleStackRecipeInput +import net.minecraft.world.World +import kotlin.jvm.optionals.getOrNull +import kotlin.math.min + +class HTFurnaceRecipeProcessor( + recipeType: RecipeType, + private val inventory: Inventory, + private val inputIndex: Int, + private val outputIndex: Int, + private val multiplier: Int = 1, +) { + private val matchGetter: HTRecipeCache = HTRecipeCache(recipeType) + + fun process(world: World): Boolean { + val inputStack: ItemStack = inventory.getStack(inputIndex) + val processCount: Int = min(inputStack.count, multiplier) + val recipeEntry: RecipeEntry = matchGetter + .getFirstMatch(SingleStackRecipeInput(inventory.getStack(inputIndex)), world) + .getOrNull() ?: return false + val recipe: T = recipeEntry.value + val resultStack: ItemStack = recipe.getResult(world.registryManager).copy() + resultStack.count *= processCount + val output: HTRecipeResult.Item = HTRecipeResult.ofItem(resultStack) + if (!output.canMerge(inventory.getStack(outputIndex))) return false + inventory.modifyStack(outputIndex, output::merge) + inventory.getStack(inputIndex).count -= processCount + return true + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTIngredient.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTIngredient.kt index fe796401c..d84f443d2 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTIngredient.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTIngredient.kt @@ -6,7 +6,6 @@ import com.mojang.serialization.DataResult import com.mojang.serialization.codecs.RecordCodecBuilder import hiiragi283.ragium.api.extension.longRangeCodec import hiiragi283.ragium.api.extension.validate -import hiiragi283.ragium.api.fluid.HTAmountedFluid import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants import net.minecraft.fluid.Fluids import net.minecraft.item.ItemConvertible @@ -20,6 +19,7 @@ import net.minecraft.registry.RegistryKeys import net.minecraft.registry.entry.RegistryEntry import net.minecraft.registry.entry.RegistryEntryList import net.minecraft.registry.tag.TagKey +import java.util.function.BiPredicate import java.util.function.Predicate import kotlin.collections.component1 import kotlin.collections.component2 @@ -27,7 +27,7 @@ import net.minecraft.fluid.Fluid as MCFluid import net.minecraft.item.Item as MCItem @Suppress("DEPRECATION") -sealed class HTIngredient(protected val entryList: RegistryEntryList, val amount: V) : Predicate { +sealed class HTIngredient(protected val entryList: RegistryEntryList, val amount: V) { val isEmpty: Boolean get() = (entryList !is RegistryEntryList.Named && entryList.size() == 0) || amount.toInt() <= 0 @@ -41,7 +41,7 @@ sealed class HTIngredient(protected val entryList: companion object { @JvmStatic - private fun > validate(ingredient: T): DataResult = when { + private fun > validate(ingredient: T): DataResult = when { ingredient.isEmpty -> DataResult.error { "Could not encode empty ingredient!" } else -> DataResult.success(ingredient) } @@ -123,7 +123,9 @@ sealed class HTIngredient(protected val entryList: // Item // - class Item(entryList: RegistryEntryList, amount: Int) : HTIngredient(entryList, amount) { + class Item(entryList: RegistryEntryList, amount: Int) : + HTIngredient(entryList, amount), + Predicate { val matchingStacks: List get() = entryMap.map { (entry: RegistryEntry, count: Int) -> ItemStack( @@ -141,10 +143,11 @@ sealed class HTIngredient(protected val entryList: // Fluid // class Fluid(entryList: RegistryEntryList, amount: Long) : - HTIngredient(entryList, amount) { - override fun test(amounted: HTAmountedFluid): Boolean = test(amounted.fluid, amounted.amount) + HTIngredient(entryList, amount), + BiPredicate { + fun test(pair: Pair): Boolean = test(pair.first, pair.second) - fun test(fluid: MCFluid, amount: Long): Boolean = when { + override fun test(fluid: MCFluid, amount: Long): Boolean = when { fluid == Fluids.EMPTY || amount <= 0 -> this.isEmpty else -> entryList.any { it == fluid } && amount >= this.amount } diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineInput.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineInput.kt index d846cccc3..cdecc603f 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineInput.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineInput.kt @@ -1,21 +1,18 @@ package hiiragi283.ragium.api.recipe -import hiiragi283.ragium.api.fluid.HTAmountedFluid import hiiragi283.ragium.api.machine.HTMachine import hiiragi283.ragium.api.machine.HTMachineKey import hiiragi283.ragium.api.machine.HTMachineTier -import hiiragi283.ragium.api.machine.HTMachineType -import hiiragi283.ragium.api.machine.property.HTMachinePropertyKeys import net.minecraft.fluid.Fluid +import net.minecraft.fluid.Fluids import net.minecraft.item.ItemStack import net.minecraft.recipe.input.RecipeInput class HTMachineInput private constructor( - val typeSize: HTMachineType.Size, val key: HTMachineKey, val tier: HTMachineTier, private val itemInputs: List, - private val fluidInputs: List, + private val fluidInputs: List>, val catalyst: ItemStack, ) : RecipeInput { companion object { @@ -23,24 +20,14 @@ class HTMachineInput private constructor( fun create(type: HTMachine, tier: HTMachineTier, builderAction: Builder.() -> Unit): HTMachineInput { val itemInputs: MutableList = mutableListOf() val fluidInputs: MutableMap = mutableMapOf() - val catalyst: ItemStack = Builder(itemInputs, fluidInputs).apply(builderAction).catalyst - check(fluidInputs.size <= 2) { "Fluid inputs must be 2 or less!" } check(itemInputs.size <= 3) { "Item inputs must be 3 or less!" } - val bool1: Boolean = fluidInputs.size == 2 - val bool2: Boolean = itemInputs.size == 3 - val bool3: Boolean = type.asProperties()[HTMachinePropertyKeys.RECIPE_SIZE] == HTMachineType.Size.LARGE - val typeSize: HTMachineType.Size = when { - bool1 || bool2 || bool3 -> HTMachineType.Size.LARGE - else -> HTMachineType.Size.SIMPLE - } return HTMachineInput( - typeSize, type.key, tier, itemInputs, - fluidInputs.map { (fluid: Fluid, amount: Long) -> HTAmountedFluid(fluid, amount) }, + fluidInputs.toList(), catalyst, ) } @@ -48,7 +35,7 @@ class HTMachineInput private constructor( fun getItem(index: Int): ItemStack = itemInputs.getOrNull(index) ?: ItemStack.EMPTY - fun getFluid(index: Int): HTAmountedFluid = fluidInputs.getOrNull(index) ?: HTAmountedFluid.EMPTY + fun getFluid(index: Int): Pair = fluidInputs.getOrNull(index) ?: (Fluids.EMPTY to 0L) // RecipeInput // @@ -69,6 +56,6 @@ class HTMachineInput private constructor( fluidInputs[fluid] = amount } - fun add(amounted: HTAmountedFluid): Builder = add(amounted.fluid, amounted.amount) + fun add(pair: Pair): Builder = add(pair.first, pair.second) } } diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipe.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipe.kt index 0740cdccd..91f88b72c 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipe.kt @@ -6,8 +6,6 @@ import hiiragi283.ragium.api.extension.toList import hiiragi283.ragium.api.machine.HTMachineDefinition import hiiragi283.ragium.api.machine.HTMachineKey import hiiragi283.ragium.api.machine.HTMachineTier -import hiiragi283.ragium.api.machine.HTMachineType -import hiiragi283.ragium.api.machine.property.HTMachinePropertyKeys import hiiragi283.ragium.common.init.RagiumRecipeSerializers import hiiragi283.ragium.common.init.RagiumRecipeTypes import net.minecraft.item.ItemStack @@ -29,7 +27,6 @@ class HTMachineRecipe( val catalyst: HTIngredient.Item?, val itemOutputs: List, val fluidOutputs: List, - val typeSize: HTMachineType.Size, ) : Recipe { companion object { @JvmField @@ -58,7 +55,7 @@ class HTMachineRecipe( .listOf() .optionalFieldOf("fluid_outputs", listOf()) .forGetter(HTMachineRecipe::fluidOutputs), - ).apply(instance, Companion::createRecipe) + ).apply(instance, ::HTMachineRecipe) } @JvmField @@ -75,47 +72,26 @@ class HTMachineRecipe( HTMachineRecipe::itemOutputs, HTRecipeResult.FLUID_PACKET_CODEC.toList(), HTMachineRecipe::fluidOutputs, - Companion::createRecipe, + ::HTMachineRecipe, ) - - @JvmStatic - fun createRecipe( - definition: HTMachineDefinition, - itemInputs: List, - fluidInputs: List, - catalyst: Optional, - itemOutputs: List, - fluidOutputs: List, - ): HTMachineRecipe { - val key: HTMachineKey = definition.key - check( - key.asProperties().contains(HTMachinePropertyKeys.RECIPE_SIZE), - ) { "Machine type must have recipe size property!" } - check(fluidInputs.size <= 2) { "Fluid inputs must be 2 or less!" } - check(fluidOutputs.size <= 2) { "Fluid outputs must be 2 or less!" } - check(itemInputs.size <= 3) { "Item inputs must be 3 or less!" } - check(itemOutputs.size <= 3) { "Item outputs must be 3 or less!" } - val bool1: Boolean = fluidInputs.size == 2 - val bool2: Boolean = fluidOutputs.size == 2 - val bool3: Boolean = itemInputs.size == 3 - val bool4: Boolean = itemOutputs.size == 3 - val bool5: Boolean = key.asProperties()[HTMachinePropertyKeys.RECIPE_SIZE] == HTMachineType.Size.LARGE - val typeSize: HTMachineType.Size = when { - bool1 || bool2 || bool3 || bool4 || bool5 -> HTMachineType.Size.LARGE - else -> HTMachineType.Size.SIMPLE - } - return HTMachineRecipe( - definition, - itemInputs, - fluidInputs, - catalyst.getOrNull(), - itemOutputs, - fluidOutputs, - typeSize, - ) - } } + constructor( + definition: HTMachineDefinition, + itemInputs: List, + fluidInputs: List, + catalyst: Optional, + itemOutputs: List, + fluidOutputs: List, + ) : this( + definition, + itemInputs, + fluidInputs, + catalyst.getOrNull(), + itemOutputs, + fluidOutputs, + ) + val key: HTMachineKey get() = definition.key val tier: HTMachineTier @@ -126,39 +102,19 @@ class HTMachineRecipe( // Recipe // override fun matches(input: HTMachineInput, world: World): Boolean { - val bool1: Boolean = input.key == this.key - val bool2: Boolean = input.tier >= this.tier - val bool3: Boolean = typeSize == input.typeSize - val bool4: Boolean = - input - .getItem(0) - .let { itemInputs.getOrNull(0)?.test(it) ?: true } - val bool5: Boolean = - input - .getItem(1) - .let { itemInputs.getOrNull(1)?.test(it) ?: true } - val bool6: Boolean = - input - .getFluid(0) - .let { fluidInputs.getOrNull(0)?.test(it) ?: true } - val bool9: Boolean = catalyst?.test(input.catalyst) ?: true - return when (input.typeSize) { - HTMachineType.Size.SIMPLE -> { - bool1 && bool2 && bool3 && bool4 && bool5 && bool6 && bool9 + if (!input.key.isOf(this.key)) return false + if (input.tier < this.tier) return false + itemInputs.forEachIndexed { index: Int, item: HTIngredient.Item -> + if (!item.test(input.getItem(index))) { + return false } - - HTMachineType.Size.LARGE -> { - val bool7: Boolean = - input - .getItem(2) - .let { itemInputs.getOrNull(2)?.test(it) ?: true } - val bool8: Boolean = - input - .getFluid(1) - .let { fluidInputs.getOrNull(1)?.test(it) ?: true } - bool1 && bool2 && bool3 && bool4 && bool5 && bool6 && bool7 && bool8 && bool9 + } + fluidInputs.forEachIndexed { index: Int, fluid: HTIngredient.Fluid -> + if (!fluid.test(input.getFluid(index))) { + return false } } + return catalyst?.test(input.catalyst) ?: true } override fun craft(input: HTMachineInput, lookup: RegistryWrapper.WrapperLookup): ItemStack = getResult(lookup) diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipeProcessor.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipeProcessor.kt index bcf271018..b387b7734 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipeProcessor.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTMachineRecipeProcessor.kt @@ -1,8 +1,8 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.DataResult -import hiiragi283.ragium.api.extension.energyNetwork import hiiragi283.ragium.api.extension.insert +import hiiragi283.ragium.api.extension.modifyStack import hiiragi283.ragium.api.extension.resourceAmount import hiiragi283.ragium.api.extension.useTransaction import hiiragi283.ragium.api.fluid.HTMachineFluidStorage @@ -39,7 +39,7 @@ class HTMachineRecipeProcessor private constructor(private val inventory: HTSimp fun process( world: World, pos: BlockPos, - machineType: HTMachineType.Processor, + machineType: Nothing, tier: HTMachineTier, input: HTMachineInput, ) { @@ -57,8 +57,7 @@ class HTMachineRecipeProcessor private constructor(private val inventory: HTSimp .getOrNull() ?: return DataResult.error { "Could not find matching recipe!" } val recipe: HTMachineRecipe = recipeEntry.value if (!canAcceptOutputs(recipe)) return DataResult.error { "Could not insert recipe outputs to slots!" } - val energyRequest: Boolean = world.energyNetwork?.amount?.let { it >= tier.recipeCost } ?: false - if (!energyRequest) { + if (!tier.canProcess(world)) { return DataResult.error { "Not matching required condition!" } } modifyOutputs(recipe) diff --git a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTSmithingModuleRecipe.kt b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTSmithingModuleRecipe.kt index 1b6f4d892..08ba2317e 100644 --- a/src/main/kotlin/hiiragi283/ragium/api/recipe/HTSmithingModuleRecipe.kt +++ b/src/main/kotlin/hiiragi283/ragium/api/recipe/HTSmithingModuleRecipe.kt @@ -1,9 +1,8 @@ package hiiragi283.ragium.api.recipe import com.mojang.serialization.MapCodec -import hiiragi283.ragium.api.extension.isOf import hiiragi283.ragium.api.tags.RagiumItemTags -import hiiragi283.ragium.common.RagiumContents +import hiiragi283.ragium.common.init.RagiumItems import hiiragi283.ragium.common.init.RagiumRecipeSerializers import hiiragi283.ragium.common.item.HTCrafterHammerItem import net.minecraft.item.ItemStack @@ -38,14 +37,13 @@ object HTSmithingModuleRecipe : SmithingRecipe { return base } - override fun getResult(registriesLookup: RegistryWrapper.WrapperLookup): ItemStack = - RagiumContents.Misc.CRAFTER_HAMMER.value.defaultStack + override fun getResult(registriesLookup: RegistryWrapper.WrapperLookup): ItemStack = RagiumItems.CRAFTER_HAMMER.defaultStack override fun getSerializer(): RecipeSerializer<*> = RagiumRecipeSerializers.MODULE_INSTALL override fun testTemplate(stack: ItemStack): Boolean = stack.isIn(RagiumItemTags.TOOL_MODULES) - override fun testBase(stack: ItemStack): Boolean = stack.isOf(RagiumContents.Misc.CRAFTER_HAMMER) + override fun testBase(stack: ItemStack): Boolean = stack.isOf(RagiumItems.CRAFTER_HAMMER) override fun testAddition(stack: ItemStack): Boolean = false } diff --git a/src/main/kotlin/hiiragi283/ragium/common/InternalRagiumAPI.kt b/src/main/kotlin/hiiragi283/ragium/common/InternalRagiumAPI.kt index fccee37e6..d3e818c67 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/InternalRagiumAPI.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/InternalRagiumAPI.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.common import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumPlugin +import hiiragi283.ragium.api.content.RagiumMaterials import hiiragi283.ragium.api.extension.buildItemStack import hiiragi283.ragium.api.extension.isClientEnv import hiiragi283.ragium.api.extension.itemSettings @@ -9,17 +10,23 @@ import hiiragi283.ragium.api.extension.mutableTableOf import hiiragi283.ragium.api.machine.* import hiiragi283.ragium.api.machine.block.HTMachineBlock import hiiragi283.ragium.api.machine.block.HTMachineBlockItem +import hiiragi283.ragium.api.material.HTMaterialKey +import hiiragi283.ragium.api.material.HTMaterialPropertyKeys +import hiiragi283.ragium.api.material.HTMaterialRegistry +import hiiragi283.ragium.api.material.HTTagPrefix import hiiragi283.ragium.api.property.HTMutablePropertyHolder import hiiragi283.ragium.api.property.HTPropertyHolderBuilder import hiiragi283.ragium.api.util.HTTable -import hiiragi283.ragium.common.RagiumContents.Misc import hiiragi283.ragium.common.advancement.HTBuiltMachineCriterion import hiiragi283.ragium.common.init.RagiumComponentTypes +import hiiragi283.ragium.common.init.RagiumItems import net.minecraft.advancement.AdvancementCriterion import net.minecraft.fluid.Fluid +import net.minecraft.item.Item import net.minecraft.item.ItemStack import net.minecraft.registry.Registries import net.minecraft.registry.Registry +import net.minecraft.util.Rarity internal data object InternalRagiumAPI : RagiumAPI { // RagiumAPI // @@ -27,6 +34,8 @@ internal data object InternalRagiumAPI : RagiumAPI { override val config: RagiumAPI.Config = RagiumConfig override lateinit var machineRegistry: HTMachineRegistry private set + override lateinit var materialRegistry: HTMaterialRegistry + private set override fun createBuiltMachineCriterion( type: HTMachine, @@ -34,7 +43,7 @@ internal data object InternalRagiumAPI : RagiumAPI { ): AdvancementCriterion = HTBuiltMachineCriterion.create(type, minTier) override fun createFilledCube(fluid: Fluid, count: Int): ItemStack = buildItemStack( - Misc.FILLED_FLUID_CUBE, + RagiumItems.FILLED_FLUID_CUBE, count, ) { add(RagiumComponentTypes.FLUID, fluid) @@ -48,10 +57,10 @@ internal data object InternalRagiumAPI : RagiumAPI { // collect keys from plugins fun addMachine(key: HTMachineKey, type: HTMachineTypeNew) { - check(keyCache.put(key, type) == null) { "Machine SizeType; ${key.id} is already registered!" } + check(keyCache.put(key, type) == null) { "Machine; ${key.id} is already registered!" } } RagiumAPI.getPlugins().forEach { - it.registerMachineType(RagiumPlugin.MachineRegister(::addMachine)) + it.registerMachineType(::addMachine) } // sort keys based on its type and id val sortedKeys: Map = keyCache @@ -60,6 +69,16 @@ internal data object InternalRagiumAPI : RagiumAPI { compareBy(Pair::second) .thenBy(Pair::first), ).toMap() + // register properties + val propertyCache: MutableMap = mutableMapOf() + RagiumAPI.getPlugins().forEach { plugin: RagiumPlugin -> + sortedKeys.keys.forEach { key: HTMachineKey -> + val builder: HTMutablePropertyHolder = propertyCache.computeIfAbsent(key) { HTPropertyHolderBuilder() } + val helper: RagiumPlugin.PropertyHelper = RagiumPlugin.PropertyHelper(key, builder) + plugin.setupCommonMachineProperties(helper) + if (isClientEnv()) plugin.setupClientMachineProperties(helper) + } + } // register blocks val blockTable: HTTable.Mutable = mutableTableOf() sortedKeys.keys.forEach { key: HTMachineKey -> @@ -71,18 +90,51 @@ internal data object InternalRagiumAPI : RagiumAPI { Registry.register(Registries.ITEM, tier.createId(key), item) } } + // complete + machineRegistry = HTMachineRegistry(sortedKeys, blockTable, propertyCache) + RagiumAPI.log { info("Registered machine types and properties!") } + } + + @JvmStatic + fun registerMaterials() { + val keyCache: MutableMap = mutableMapOf() + + // collect keys from plugins + fun addMaterial(key: HTMaterialKey, type: RagiumMaterials.Type) { + check(keyCache.put(key, type) == null) { "Material; ${key.name} is already registered!" } + } + RagiumAPI.getPlugins().forEach { + it.registerMaterial(::addMaterial) + } + // sort keys based on its type and id + val sortedKeys: Map = keyCache + .toList() + .sortedWith( + compareBy(Pair::second) + .thenBy(Pair::first), + ).toMap() // register properties - val propertyCache: MutableMap = mutableMapOf() + val propertyCache: MutableMap = mutableMapOf() RagiumAPI.getPlugins().forEach { plugin: RagiumPlugin -> - sortedKeys.keys.forEach { key: HTMachineKey -> + sortedKeys.keys.forEach { key: HTMaterialKey -> val builder: HTMutablePropertyHolder = propertyCache.computeIfAbsent(key) { HTPropertyHolderBuilder() } - val helper = RagiumPlugin.PropertyHelper(key, builder) - plugin.setupCommonMachineProperties(helper) - if (isClientEnv()) plugin.setupClientMachineProperties(helper) + val helper: RagiumPlugin.PropertyHelper = RagiumPlugin.PropertyHelper(key, builder) + plugin.setupCommonMaterialProperties(helper) + if (isClientEnv()) plugin.setupClientMaterialProperties(helper) + } + } + // register items + val itemTable: HTTable.Mutable = mutableTableOf() + sortedKeys.keys.forEach { key: HTMaterialKey -> + val rarity: Rarity = propertyCache[key]!!.getOrDefault(HTMaterialPropertyKeys.RARITY) + HTTagPrefix.registry.values.forEach { prefix: HTTagPrefix -> + val item = Item(itemSettings().rarity(rarity)) + Registry.register(Registries.ITEM, prefix.createId(key), item) + itemTable.put(prefix, key, item) } } // complete - machineRegistry = HTMachineRegistry(sortedKeys, blockTable, propertyCache) - RagiumAPI.log { info("Registered machine types and properties!") } + materialRegistry = HTMaterialRegistry(sortedKeys, itemTable, propertyCache) + RagiumAPI.log { info("Registered material types and properties!") } } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index b18370a62..49cf49013 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -1,7 +1,7 @@ package hiiragi283.ragium.common import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.tags.HTTagPrefixes +import hiiragi283.ragium.api.material.HTTagPrefixes import hiiragi283.ragium.api.trade.HTTradeOfferRegistry import hiiragi283.ragium.common.init.* import net.fabricmc.api.ModInitializer diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumContents.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumContents.kt index e5731b512..c734927df 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumContents.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumContents.kt @@ -4,13 +4,11 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.content.* import hiiragi283.ragium.api.data.HTLangType import hiiragi283.ragium.api.machine.HTMachineTier -import hiiragi283.ragium.api.tags.HTTagPrefix -import hiiragi283.ragium.api.tags.HTTagPrefixes +import hiiragi283.ragium.api.material.HTTagPrefix +import hiiragi283.ragium.api.material.HTTagPrefixes import hiiragi283.ragium.common.block.HTPipeType -import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags import net.minecraft.block.Block import net.minecraft.block.Blocks -import net.minecraft.fluid.Fluid import net.minecraft.item.ArmorMaterial import net.minecraft.item.Item import net.minecraft.item.ItemConvertible @@ -21,8 +19,6 @@ import net.minecraft.registry.RegistryKey import net.minecraft.registry.RegistryKeys import net.minecraft.registry.entry.RegistryEntry import net.minecraft.registry.tag.TagKey -import net.minecraft.util.Util -import java.awt.Color object RagiumContents : HTContentRegister { // Ores // @@ -323,134 +319,4 @@ object RagiumContents : HTContentRegister { override val enPattern: String = "%s Circuit" override val jaPattern: String = "%s回路" } - - // Foods // - - enum class Foods : HTContent { - BEE_WAX { - override val commonTagKey: TagKey = ConventionalItemTags.DUSTS - }, - BUTTER, - CARAMEL, - CHOCOLATE, - CHOCOLATE_APPLE, - CHOCOLATE_BREAD, - FLOUR { - override val commonTagKey: TagKey = ConventionalItemTags.DUSTS - }, - DOUGH, - MINCED_MEAT { - override val commonTagKey: TagKey = ConventionalItemTags.DUSTS - }, - PULP { - override val commonTagKey: TagKey = ConventionalItemTags.DUSTS - }, - ; - - override val registry: Registry = Registries.ITEM - override val key: RegistryKey = - RegistryKey.of(RegistryKeys.ITEM, RagiumAPI.id(name.lowercase())) - - override fun getTranslation(type: HTLangType): String = throw UnsupportedOperationException() - } - - // Misc // - - enum class Misc : HTContent { - BACKPACK, - BASALT_MESH, - CRAFTER_HAMMER, - DYNAMITE, - EMPTY_FLUID_CUBE, - FILLED_FLUID_CUBE, - ENGINE, - FORGE_HAMMER, - HEART_OF_THE_NETHER, - POLYMER_RESIN, - PROCESSOR_SOCKET, - RAGI_ALLOY_COMPOUND, - RAGI_CRYSTAL_PROCESSOR, - REMOVER_DYNAMITE, - SOAP_INGOT, - SOLAR_PANEL, - TRADER_CATALOG, - ; - - override val registry: Registry = Registries.ITEM - override val key: RegistryKey = - RegistryKey.of(RegistryKeys.ITEM, RagiumAPI.id(name.lowercase())) - - override fun getTranslation(type: HTLangType): String = throw UnsupportedOperationException() - } - - // Fluids // - - enum class Fluids(val color: Color, override val enName: String, override val jaName: String) : - HTRegistryContent, - HTTranslationProvider { - // Vanilla - MILK(Color(0xffffff), "Milk", "牛乳"), - HONEY(Color(0xffcc33), "Honey", "蜂蜜"), - - // Molten Materials - - // Organics - TALLOW(Color(0xcc9933), "Tallow", "獣脂"), - SEED_OIL(Color(0x99cc33), "Seed Oil", "種油"), - GLYCEROL(Color(0x99cc66), "Glycerol", "グリセロール"), - - // Foods - BATTER(Color(0xffcc66), "Batter", "バッター液"), - CHOCOLATE(Color(0x663300), "Chocolate", "チョコレート"), - STARCH_SYRUP(Color(0x99ffff), "Starch Syrup", "水あめ"), - SWEET_BERRIES(Color(0x990000), "Sweet Berries", "スイートベリー"), - - // Natural Resources - SALT_WATER(Color(0x003399), "Salt Water", "塩水"), - CRUDE_OIL(Color(0x000000), "Crude Oil", "原油"), - - // Elements - HYDROGEN(Color(0x0000cc), "Hydrogen", "水素"), - NITROGEN(Color(0x66cccc), "Nitrogen", "窒素"), - OXYGEN(Color(0x99ccff), "Oxygen", "酸素"), - CHLORINE(Color(0xccff33), "Chlorine", "塩素"), - - // Non-organic Chemical Compounds - NITRIC_ACID(Color(0xcc99ff), "Nitric Acid", "硝酸"), - SODIUM_HYDROXIDE(Color(0x000099), "Sodium Hydroxide Solution", "水酸化ナトリウム水溶液"), - SULFURIC_ACID(Color(0xff3300), "Sulfuric Acid", "硫酸"), - MIXTURE_ACID(Color(0xff3300), "Mixture Acid", "混酸"), - ALUMINA_SOLUTION(Color(0xcccccc), "Alumina Solution", "アルミナ溶液"), - - // Oil products - REFINED_GAS(Color(0xcccccc), "Refined Gas", "精製ガス"), - NAPHTHA(Color(0xff9900), "Naphtha", "ナフサ"), - RESIDUAL_OIL(Color(0x000033), "Residual Oil", "残渣油"), - - // METHANE(Color(0xcc0099), "Methane", "メタン"), - // METHANOL(Color(0xcc00ff), "Methanol", "メタノール"), - // LPG(Color(0xffff33), "LPG", "LGP"), - // ETHYLENE(Color(0x999999), "Ethylene", "エチレン"), - ALCOHOL(Color(0xccffff), "Alcohol", "アルコール"), - - AROMATIC_COMPOUNDS(Color(0x666699), "Aromatic Compounds", "芳香族化合物"), - - // LUBRICANT(Color(0x996633), "Lubricant", "潤滑油"), - ASPHALT(Color(0x000066), "Asphalt", "アスファルト"), - - // Fuels - BIO_FUEL(Color(0x99ff00), "Bio Fuel", "バイオ燃料"), - FUEL(Color(0xcc6633), "Fuel", "燃料"), - NITRO_FUEL(Color(0xff33333), "Nitro Fuel", "ニトロ燃料"), - - // Explodes - NITRO_GLYCERIN(Color(0x99cc66), "Nitroglycerin", "ニトログリセリン"), - TRINITROTOLUENE(Color(0x666699), "Trinitrotoluene", "トリニトロトルエン"), - ; - - override val registry: Registry = Registries.FLUID - override val key: RegistryKey = RegistryKey.of(RegistryKeys.FLUID, RagiumAPI.id(name.lowercase())) - - val translationKey: String = Util.createTranslationKey("fluid", id) - } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumDefaultPlugin.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumDefaultPlugin.kt index 14bcf28ed..36499d977 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumDefaultPlugin.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumDefaultPlugin.kt @@ -2,15 +2,19 @@ package hiiragi283.ragium.common import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumPlugin +import hiiragi283.ragium.api.content.RagiumMaterials import hiiragi283.ragium.api.extension.getAroundPos -import hiiragi283.ragium.api.machine.HTMachineType +import hiiragi283.ragium.api.machine.HTMachineKey +import hiiragi283.ragium.api.machine.HTMachineTypeNew import hiiragi283.ragium.api.machine.block.HTGeneratorBlockEntityBase import hiiragi283.ragium.api.machine.block.HTMachineEntityFactory import hiiragi283.ragium.api.machine.property.HTMachinePropertyKeys import hiiragi283.ragium.api.machine.property.HTMachineTooltipAppender +import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.common.init.RagiumMachineKeys import hiiragi283.ragium.common.machine.HTCombustionGeneratorBlockEntity import hiiragi283.ragium.common.machine.HTDrainBlockEntity +import hiiragi283.ragium.common.machine.HTMultiSmelterBlockEntity import hiiragi283.ragium.common.machine.HTSteamGeneratorBlockEntity import net.minecraft.block.Block import net.minecraft.fluid.FluidState @@ -21,41 +25,31 @@ import net.minecraft.util.Identifier import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction import net.minecraft.world.World +import java.util.function.BiConsumer object RagiumDefaultPlugin : RagiumPlugin { override val priority: Int = -100 override fun afterRagiumInit(instance: RagiumAPI) {} - override fun registerMachineType(register: RagiumPlugin.MachineRegister) { + override fun registerMachineType(register: BiConsumer) { // consumer - RagiumMachineKeys.CONSUMERS.forEach(register::registerConsumer) + RagiumMachineKeys.CONSUMERS.forEach { register.accept(it, HTMachineTypeNew.CONSUMER) } // generators - RagiumMachineKeys.GENERATORS.forEach(register::registerGenerator) + RagiumMachineKeys.GENERATORS.forEach { register.accept(it, HTMachineTypeNew.GENERATOR) } // processors - RagiumMachineKeys.PROCESSORS.forEach(register::registerProcessor) + RagiumMachineKeys.PROCESSORS.forEach { register.accept(it, HTMachineTypeNew.PROCESSOR) } } - override fun setupCommonMachineProperties(helper: RagiumPlugin.PropertyHelper) { + override fun registerMaterial(register: BiConsumer) { + } + + override fun setupCommonMachineProperties(helper: RagiumPlugin.PropertyHelper) { // consumers helper.modify(RagiumMachineKeys.DRAIN) { set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntityFactory.of(::HTDrainBlockEntity)) } // generators - /*helper.modify(RagiumMachineKeys.HEAT_GENERATOR) { - set(HTMachinePropertyKeys.GENERATOR_PREDICATE) { world: World, pos: BlockPos -> - world - .getMachineEntity(pos) - ?.let { it as? HTHeatGeneratorMachineEntity } - ?.isBurning - ?: false - } - set( - HTMachinePropertyKeys.MACHINE_FACTORY, - HTMachineEntity.Factory.ofStatic(::HTHeatGeneratorMachineEntity), - ) - set(HTMachinePropertyKeys.GENERATOR_COLOR, DyeColor.RED) - }*/ helper.modify(RagiumMachineKeys.COMBUSTION_GENERATOR) { set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntityFactory.of(::HTCombustionGeneratorBlockEntity)) set(HTMachinePropertyKeys.GENERATOR_COLOR, DyeColor.BLUE) @@ -96,24 +90,25 @@ object RagiumDefaultPlugin : RagiumPlugin { helper.modify(it) { // set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntity.Factory(::HTSimpleProcessorMachineEntity)) set(HTMachinePropertyKeys.TOOLTIP_BUILDER, HTMachineTooltipAppender.DEFAULT_PROCESSOR) - set(HTMachinePropertyKeys.RECIPE_SIZE, HTMachineType.Size.SIMPLE) } } helper.modify(RagiumMachineKeys.BLAST_FURNACE) { // set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntity.Factory.ofStatic(::HTBlastFurnaceMachineEntity),) set(HTMachinePropertyKeys.TOOLTIP_BUILDER, HTMachineTooltipAppender.DEFAULT_PROCESSOR) - set(HTMachinePropertyKeys.RECIPE_SIZE, HTMachineType.Size.LARGE) } helper.modify(RagiumMachineKeys.DISTILLATION_TOWER) { // set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntity.Factory.ofStatic(::HTDistillationTowerMachineEntity)) set(HTMachinePropertyKeys.TOOLTIP_BUILDER, HTMachineTooltipAppender.DEFAULT_PROCESSOR) - set(HTMachinePropertyKeys.RECIPE_SIZE, HTMachineType.Size.LARGE) + } + helper.modify(RagiumMachineKeys.MULTI_SMELTER) { + // set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntity.Factory.ofStatic(::HTBlastFurnaceMachineEntity),) + set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntityFactory.of(::HTMultiSmelterBlockEntity)) + set(HTMachinePropertyKeys.TOOLTIP_BUILDER, HTMachineTooltipAppender.DEFAULT_PROCESSOR) } helper.modify(RagiumMachineKeys.SAW_MILL) { set(HTMachinePropertyKeys.FRONT_TEX) { Identifier.of("block/stonecutter_saw") } set(HTMachinePropertyKeys.TOOLTIP_BUILDER, HTMachineTooltipAppender.DEFAULT_PROCESSOR) // set(HTMachinePropertyKeys.MACHINE_FACTORY, HTMachineEntity.Factory.ofStatic(::HTSawMillMachineEntity)) - set(HTMachinePropertyKeys.RECIPE_SIZE, HTMachineType.Size.LARGE) } } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTManualForgeBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTManualForgeBlockEntity.kt index 4365ebd86..25f828d10 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTManualForgeBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/HTManualForgeBlockEntity.kt @@ -1,13 +1,12 @@ package hiiragi283.ragium.common.block.entity import hiiragi283.ragium.api.extension.dropStackAt -import hiiragi283.ragium.api.extension.isOf import hiiragi283.ragium.api.machine.HTMachineTier import hiiragi283.ragium.api.recipe.HTMachineInput import hiiragi283.ragium.api.recipe.HTMachineRecipe import hiiragi283.ragium.api.recipe.HTRecipeCache -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumBlockEntityTypes +import hiiragi283.ragium.common.init.RagiumItems import hiiragi283.ragium.common.init.RagiumMachineKeys import hiiragi283.ragium.common.init.RagiumRecipeTypes import net.minecraft.block.BlockState @@ -41,7 +40,7 @@ class HTManualForgeBlockEntity(pos: BlockPos, state: BlockState) : HTBlockEntity private fun process(player: PlayerEntity) { val world: World = world ?: return val stackMain: ItemStack = player.getStackInHand(Hand.MAIN_HAND) - if (!stackMain.isOf(RagiumContents.Misc.FORGE_HAMMER)) return + if (!stackMain.isOf(RagiumItems.FORGE_HAMMER)) return val stackOff: ItemStack = player.getStackInHand(Hand.OFF_HAND) val recipe: HTMachineRecipe = recipeCache .getFirstMatch( diff --git a/src/main/kotlin/hiiragi283/ragium/common/entity/HTDynamiteEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/entity/HTDynamiteEntity.kt index dce3bdb98..c9bfad306 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/entity/HTDynamiteEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/entity/HTDynamiteEntity.kt @@ -1,9 +1,9 @@ package hiiragi283.ragium.common.entity -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.component.HTDynamiteComponent import hiiragi283.ragium.common.init.RagiumComponentTypes import hiiragi283.ragium.common.init.RagiumEntityTypes +import hiiragi283.ragium.common.init.RagiumItems import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity import net.minecraft.entity.projectile.thrown.ThrownItemEntity @@ -18,7 +18,7 @@ class HTDynamiteEntity : ThrownItemEntity { constructor(world: World, x: Double, y: Double, z: Double) : super(RagiumEntityTypes.DYNAMITE, x, y, z, world) - override fun getDefaultItem(): Item = RagiumContents.Misc.DYNAMITE.value + override fun getDefaultItem(): Item = RagiumItems.DYNAMITE override fun onCollision(hitResult: HitResult) { super.onCollision(hitResult) diff --git a/src/main/kotlin/hiiragi283/ragium/common/entity/HTRemoverDynamiteEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/entity/HTRemoverDynamiteEntity.kt index d267d5b36..0d96d3b59 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/entity/HTRemoverDynamiteEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/entity/HTRemoverDynamiteEntity.kt @@ -1,8 +1,8 @@ package hiiragi283.ragium.common.entity -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumComponentTypes import hiiragi283.ragium.common.init.RagiumEntityTypes +import hiiragi283.ragium.common.init.RagiumItems import net.minecraft.entity.EntityStatuses import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity @@ -26,7 +26,7 @@ class HTRemoverDynamiteEntity : ThrownItemEntity { world, ) - override fun getDefaultItem(): Item = RagiumContents.Misc.REMOVER_DYNAMITE.value + override fun getDefaultItem(): Item = RagiumItems.REMOVER_DYNAMITE override fun handleStatus(status: Byte) { if (status == EntityStatuses.PLAY_DEATH_SOUND_OR_ADD_PROJECTILE_HIT_PARTICLES) { diff --git a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTEmptyFluidCubeStorage.kt b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTEmptyFluidCubeStorage.kt index 777b3459f..a597a9f4c 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/fluid/HTEmptyFluidCubeStorage.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/fluid/HTEmptyFluidCubeStorage.kt @@ -1,8 +1,7 @@ package hiiragi283.ragium.common.fluid -import hiiragi283.ragium.api.extension.isOf -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumComponentTypes +import hiiragi283.ragium.common.init.RagiumItems import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant @@ -20,10 +19,10 @@ class HTEmptyFluidCubeStorage(val context: ContainerItemContext) : InsertionOnly override fun insert(resource: FluidVariant, maxAmount: Long, transaction: TransactionContext): Long { StoragePreconditions.notBlankNotNegative(resource, maxAmount) - if (!context.itemVariant.isOf(RagiumContents.Misc.EMPTY_FLUID_CUBE)) return 0 + if (!context.itemVariant.isOf(RagiumItems.EMPTY_FLUID_CUBE)) return 0 if (maxAmount >= FluidConstants.BUCKET) { val newVariant: ItemVariant = ItemVariant.of( - RagiumContents.Misc.FILLED_FLUID_CUBE, + RagiumItems.FILLED_FLUID_CUBE, ComponentChanges .builder() .add(RagiumComponentTypes.FLUID, resource.fluid) diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumBlockEntityTypes.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumBlockEntityTypes.kt index 270a57e62..009d9296c 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumBlockEntityTypes.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumBlockEntityTypes.kt @@ -3,14 +3,12 @@ package hiiragi283.ragium.common.init import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.extension.blockEntityType import hiiragi283.ragium.api.machine.HTMachineKey -import hiiragi283.ragium.api.machine.HTMachineTier import hiiragi283.ragium.api.machine.block.HTGeneratorBlockEntityBase -import hiiragi283.ragium.api.machine.block.HTMachineBlock -import hiiragi283.ragium.api.util.HTTable import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.block.entity.* import hiiragi283.ragium.common.machine.HTCombustionGeneratorBlockEntity import hiiragi283.ragium.common.machine.HTDrainBlockEntity +import hiiragi283.ragium.common.machine.HTMultiSmelterBlockEntity import hiiragi283.ragium.common.machine.HTSteamGeneratorBlockEntity import net.minecraft.block.entity.BlockEntityType import net.minecraft.registry.Registries @@ -58,6 +56,10 @@ object RagiumBlockEntityTypes { val MANUAL_GRINDER: BlockEntityType = register("manual_grinder", ::HTManualGrinderBlockEntity) + @JvmField + val MULTI_SMELTER: BlockEntityType = + register("multi_smelter", ::HTMultiSmelterBlockEntity) + @JvmField val MANUAL_MIXER: BlockEntityType = register("manual_mixer", ::HTManualMixerBlockEntity) @@ -99,18 +101,26 @@ object RagiumBlockEntityTypes { META_MACHINE.addSupportedBlock(RagiumBlocks.META_GENERATOR) META_MACHINE.addSupportedBlock(RagiumBlocks.META_PROCESSOR) TRADER_STATION.addSupportedBlock(RagiumBlocks.TRADER_STATION) - - val blockTable: HTTable = RagiumAPI.getInstance().machineRegistry.blocks // consumers - blockTable.row(RagiumMachineKeys.DRAIN).values.forEach(DRAIN::addSupportedBlock) + registerMachineBlocks(RagiumMachineKeys.DRAIN, DRAIN) // generators - buildList { - addAll(blockTable.row(RagiumMachineKeys.SOLAR_PANEL).values) - addAll(blockTable.row(RagiumMachineKeys.THERMAL_GENERATOR).values) - addAll(blockTable.row(RagiumMachineKeys.WATER_GENERATOR).values) - }.forEach(SIMPLE_GENERATOR::addSupportedBlock) - blockTable.row(RagiumMachineKeys.COMBUSTION_GENERATOR).values.forEach(COMBUSTION_GENERATOR::addSupportedBlock) - blockTable.row(RagiumMachineKeys.STEAM_GENERATOR).values.forEach(STEAM_GENERATOR::addSupportedBlock) + registerMachineBlocks(RagiumMachineKeys.SOLAR_PANEL, SIMPLE_GENERATOR) + registerMachineBlocks(RagiumMachineKeys.THERMAL_GENERATOR, SIMPLE_GENERATOR) + registerMachineBlocks(RagiumMachineKeys.WATER_GENERATOR, SIMPLE_GENERATOR) + registerMachineBlocks(RagiumMachineKeys.COMBUSTION_GENERATOR, COMBUSTION_GENERATOR) + registerMachineBlocks(RagiumMachineKeys.STEAM_GENERATOR, STEAM_GENERATOR) // processors + registerMachineBlocks(RagiumMachineKeys.MULTI_SMELTER, MULTI_SMELTER) + } + + @JvmStatic + private fun registerMachineBlocks(key: HTMachineKey, type: BlockEntityType<*>) { + RagiumAPI + .getInstance() + .machineRegistry + .blocks + .row(key) + .values + .forEach(type::addSupportedBlock) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumContentRegister.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumContentRegister.kt index 4cd5f7541..1a5ae9d53 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumContentRegister.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumContentRegister.kt @@ -15,7 +15,8 @@ import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.block.HTExporterBlock import hiiragi283.ragium.common.block.HTPipeBlock import hiiragi283.ragium.common.fluid.HTEmptyFluidCubeStorage -import hiiragi283.ragium.common.item.* +import hiiragi283.ragium.common.item.HTCrafterHammerItem +import hiiragi283.ragium.common.item.HTMetaMachineBlockItem import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext import net.fabricmc.fabric.api.transfer.v1.fluid.* import net.fabricmc.fabric.api.transfer.v1.fluid.base.FullItemFluidStorage @@ -28,7 +29,6 @@ import net.minecraft.block.* import net.minecraft.block.cauldron.CauldronBehavior import net.minecraft.block.entity.BlockEntity import net.minecraft.component.type.FoodComponent -import net.minecraft.component.type.FoodComponents import net.minecraft.entity.LivingEntity import net.minecraft.entity.effect.StatusEffectInstance import net.minecraft.entity.effect.StatusEffects @@ -41,7 +41,6 @@ import net.minecraft.registry.Registries import net.minecraft.registry.Registry import net.minecraft.text.Text import net.minecraft.util.DyeColor -import net.minecraft.util.Rarity import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction import net.minecraft.world.World @@ -52,10 +51,10 @@ object RagiumContentRegister : HTContentRegister { private val itemBuilders: MutableMap, HTPropertyHolderBuilder> = mutableMapOf() private val settingsKey: HTPropertyKey.Defaulted<(Item.Settings) -> Item.Settings> = - HTPropertyKey.Defaulted(RagiumAPI.id("settings"), value = { it }) + HTPropertyKey.ofDefaulted(RagiumAPI.id("settings"), value = { it }) private val itemKey: HTPropertyKey.Defaulted<(Item.Settings) -> Item> = - HTPropertyKey.Defaulted(RagiumAPI.id("item"), value = ::Item) + HTPropertyKey.ofDefaulted(RagiumAPI.id("item"), value = ::Item) private fun getProperties(content: HTContent): HTPropertyHolderBuilder = itemBuilders.computeIfAbsent(content) { HTPropertyHolderBuilder() } @@ -97,8 +96,6 @@ object RagiumContentRegister : HTContentRegister { addAll(HTCrafterHammerItem.Behavior.entries) addAll(RagiumContents.CircuitBoards.entries) addAll(RagiumContents.Circuits.entries) - addAll(RagiumContents.Foods.entries) - addAll(RagiumContents.Misc.entries) }.forEach(::createAndRegisterItem) RagiumContents.Hulls.entries.forEach { hull: RagiumContents.Hulls -> @@ -123,7 +120,7 @@ object RagiumContentRegister : HTContentRegister { registerBlockItem(block, itemSettings()) } - RagiumContents.Fluids.entries.forEach { fluid: RagiumContents.Fluids -> + RagiumFluids.entries.forEach { fluid: RagiumFluids -> Registry.register(Registries.FLUID, fluid.id, HTVirtualFluid()) } } @@ -138,41 +135,6 @@ object RagiumContentRegister : HTContentRegister { RagiumContents.Tools.entries.forEach { tool: RagiumContents.Tools -> getProperties(tool)[itemKey] = { tool.toolType.createToolItem(tool.material, it) } } - // foods - getProperties(RagiumContents.Foods.BUTTER)[settingsKey] = { it.food(FoodComponents.APPLE) } - getProperties(RagiumContents.Foods.CARAMEL)[settingsKey] = { it.food(FoodComponents.DRIED_KELP) } - getProperties(RagiumContents.Foods.CHOCOLATE)[settingsKey] = { - it.food( - FoodComponent - .Builder() - .nutrition(3) - .saturationModifier(0.3f) - .statusEffect( - StatusEffectInstance(StatusEffects.STRENGTH, 10 * 20, 0), - 1.0f, - ).snack() - .alwaysEdible() - .build(), - ) - } - getProperties(RagiumContents.Foods.CHOCOLATE_APPLE)[settingsKey] = { it.food(FoodComponents.COOKED_CHICKEN) } - getProperties(RagiumContents.Foods.CHOCOLATE_BREAD)[settingsKey] = { it.food(FoodComponents.COOKED_BEEF) } - // ingredients - getProperties(RagiumContents.Misc.BACKPACK)[itemKey] = { HTBackpackItem } - getProperties(RagiumContents.Misc.CRAFTER_HAMMER)[itemKey] = { HTCrafterHammerItem } - getProperties(RagiumContents.Misc.DYNAMITE)[itemKey] = { HTDynamiteItem } - getProperties(RagiumContents.Misc.FILLED_FLUID_CUBE)[itemKey] = { HTFilledFluidCubeItem } - getProperties(RagiumContents.Misc.FORGE_HAMMER)[itemKey] = { HTForgeHammerItem } - getProperties(RagiumContents.Misc.HEART_OF_THE_NETHER)[settingsKey] = { it.rarity(Rarity.UNCOMMON) } - /*getProperties(RagiumContents.Misc.OBLIVION_CUBE_SPAWN_EGG)[itemKey] = { - SpawnEggItem( - RagiumEntityTypes.OBLIVION_CUBE, - 0x000000, - 0xffffff, - itemSettings(), - ) - }*/ - getProperties(RagiumContents.Misc.REMOVER_DYNAMITE)[itemKey] = { HTRemoverDynamiteItem } } @JvmStatic @@ -228,10 +190,10 @@ object RagiumContentRegister : HTContentRegister { }, RagiumBlocks.TRASH_BOX) FluidStorage - .combinedItemApiProvider(RagiumContents.Misc.EMPTY_FLUID_CUBE.asItem()) + .combinedItemApiProvider(RagiumItems.EMPTY_FLUID_CUBE) .register(::HTEmptyFluidCubeStorage) FluidStorage.GENERAL_COMBINED_PROVIDER.register { context: ContainerItemContext -> - if (context.itemVariant.isOf(RagiumContents.Misc.FILLED_FLUID_CUBE)) { + if (context.itemVariant.isOf(RagiumItems.FILLED_FLUID_CUBE)) { context .itemVariant .componentMap @@ -239,7 +201,7 @@ object RagiumContentRegister : HTContentRegister { ?.let { FullItemFluidStorage( context, - RagiumContents.Misc.EMPTY_FLUID_CUBE.asItem(), + RagiumItems.EMPTY_FLUID_CUBE, FluidVariant.of(it), FluidConstants.BUCKET, ) @@ -317,10 +279,10 @@ object RagiumContentRegister : HTContentRegister { } }*/ // Dispenser - DispenserBlock.registerProjectileBehavior(RagiumContents.Misc.DYNAMITE) - DispenserBlock.registerProjectileBehavior(RagiumContents.Misc.REMOVER_DYNAMITE) + DispenserBlock.registerProjectileBehavior(RagiumItems.DYNAMITE) + DispenserBlock.registerProjectileBehavior(RagiumItems.REMOVER_DYNAMITE) // Fluid Attributes - RagiumContents.Fluids.entries.forEach { fluid: RagiumContents.Fluids -> + RagiumFluids.entries.forEach { fluid: RagiumFluids -> FluidVariantAttributes.register( fluid.value, object : FluidVariantAttributeHandler { @@ -336,17 +298,17 @@ object RagiumContentRegister : HTContentRegister { dropStackAt(user, Items.OBSIDIAN.defaultStack) } } - HTFluidDrinkingHandlerRegistry.register(RagiumContents.Fluids.MILK) { _: ItemStack, world: World, user: LivingEntity -> + HTFluidDrinkingHandlerRegistry.register(RagiumFluids.MILK) { _: ItemStack, world: World, user: LivingEntity -> if (!world.isClient) { user.clearStatusEffects() } } - HTFluidDrinkingHandlerRegistry.register(RagiumContents.Fluids.HONEY) { _: ItemStack, world: World, user: LivingEntity -> + HTFluidDrinkingHandlerRegistry.register(RagiumFluids.HONEY) { _: ItemStack, world: World, user: LivingEntity -> if (!world.isClient) { user.removeStatusEffect(StatusEffects.POISON) } } - HTFluidDrinkingHandlerRegistry.register(RagiumContents.Fluids.CHOCOLATE) { _: ItemStack, world: World, user: LivingEntity -> + HTFluidDrinkingHandlerRegistry.register(RagiumFluids.CHOCOLATE) { _: ItemStack, world: World, user: LivingEntity -> if (!world.isClient) { user.addStatusEffect( StatusEffectInstance(StatusEffects.STRENGTH, 20 * 5, 1), diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumEventHandlers.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumEventHandlers.kt index 3b011c38f..2a6281430 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumEventHandlers.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumEventHandlers.kt @@ -170,7 +170,7 @@ object RagiumEventHandlers { UseItemCallback.EVENT.register { player: PlayerEntity, world: World, hand: Hand -> val stack: ItemStack = player.getStackInHand(hand) - if (stack.isOf(RagiumContents.Misc.TRADER_CATALOG)) { + if (stack.isOf(RagiumItems.TRADER_CATALOG)) { WanderingTraderEntity(EntityType.WANDERING_TRADER, world).interactMob(player, Hand.MAIN_HAND) TypedActionResult.success(stack, world.isClient) } else { diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumFluids.kt new file mode 100644 index 000000000..2d11724de --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumFluids.kt @@ -0,0 +1,81 @@ +package hiiragi283.ragium.common.init + +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.content.HTRegistryContent +import hiiragi283.ragium.api.content.HTTranslationProvider +import net.minecraft.fluid.Fluid +import net.minecraft.registry.Registries +import net.minecraft.registry.Registry +import net.minecraft.registry.RegistryKey +import net.minecraft.registry.RegistryKeys +import net.minecraft.util.Util +import java.awt.Color + +enum class RagiumFluids(val color: Color, override val enName: String, override val jaName: String) : + HTRegistryContent, + HTTranslationProvider { + // Vanilla + MILK(Color(0xffffff), "Milk", "牛乳"), + HONEY(Color(0xffcc33), "Honey", "蜂蜜"), + + // Molten Materials + + // Organics + TALLOW(Color(0xcc9933), "Tallow", "獣脂"), + SEED_OIL(Color(0x99cc33), "Seed Oil", "種油"), + GLYCEROL(Color(0x99cc66), "Glycerol", "グリセロール"), + + // Foods + BATTER(Color(0xffcc66), "Batter", "バッター液"), + CHOCOLATE(Color(0x663300), "Chocolate", "チョコレート"), + STARCH_SYRUP(Color(0x99ffff), "Starch Syrup", "水あめ"), + SWEET_BERRIES(Color(0x990000), "Sweet Berries", "スイートベリー"), + + // Natural Resources + SALT_WATER(Color(0x003399), "Salt Water", "塩水"), + CRUDE_OIL(Color(0x000000), "Crude Oil", "原油"), + + // Elements + HYDROGEN(Color(0x0000cc), "Hydrogen", "水素"), + NITROGEN(Color(0x66cccc), "Nitrogen", "窒素"), + OXYGEN(Color(0x99ccff), "Oxygen", "酸素"), + CHLORINE(Color(0xccff33), "Chlorine", "塩素"), + + // Non-organic Chemical Compounds + NITRIC_ACID(Color(0xcc99ff), "Nitric Acid", "硝酸"), + SODIUM_HYDROXIDE(Color(0x000099), "Sodium Hydroxide Solution", "水酸化ナトリウム水溶液"), + SULFURIC_ACID(Color(0xff3300), "Sulfuric Acid", "硫酸"), + MIXTURE_ACID(Color(0xff3300), "Mixture Acid", "混酸"), + ALUMINA_SOLUTION(Color(0xcccccc), "Alumina Solution", "アルミナ溶液"), + + // Oil products + REFINED_GAS(Color(0xcccccc), "Refined Gas", "精製ガス"), + NAPHTHA(Color(0xff9900), "Naphtha", "ナフサ"), + RESIDUAL_OIL(Color(0x000033), "Residual Oil", "残渣油"), + + // METHANE(Color(0xcc0099), "Methane", "メタン"), + // METHANOL(Color(0xcc00ff), "Methanol", "メタノール"), + // LPG(Color(0xffff33), "LPG", "LGP"), + // ETHYLENE(Color(0x999999), "Ethylene", "エチレン"), + ALCOHOL(Color(0xccffff), "Alcohol", "アルコール"), + + AROMATIC_COMPOUNDS(Color(0x666699), "Aromatic Compounds", "芳香族化合物"), + + // LUBRICANT(Color(0x996633), "Lubricant", "潤滑油"), + ASPHALT(Color(0x000066), "Asphalt", "アスファルト"), + + // Fuels + BIO_FUEL(Color(0x99ff00), "Bio Fuel", "バイオ燃料"), + FUEL(Color(0xcc6633), "Fuel", "燃料"), + NITRO_FUEL(Color(0xff33333), "Nitro Fuel", "ニトロ燃料"), + + // Explodes + NITRO_GLYCERIN(Color(0x99cc66), "Nitroglycerin", "ニトログリセリン"), + TRINITROTOLUENE(Color(0x666699), "Trinitrotoluene", "トリニトロトルエン"), + ; + + override val registry: Registry = Registries.FLUID + override val key: RegistryKey = RegistryKey.of(RegistryKeys.FLUID, RagiumAPI.id(name.lowercase())) + + val translationKey: String = Util.createTranslationKey("fluid", id) +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItemGroup.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItemGroup.kt index d34ba0048..1e11588ee 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItemGroup.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItemGroup.kt @@ -59,12 +59,11 @@ object RagiumItemGroup { addAll(RagiumContents.CircuitBoards.entries) addAll(RagiumContents.Circuits.entries) - addAll(RagiumContents.Foods.entries) add(RagiumBlocks.SPONGE_CAKE) add(RagiumBlocks.SWEET_BERRIES_CAKE) - addAll(RagiumContents.Misc.entries) - remove(RagiumContents.Misc.BACKPACK) - remove(RagiumContents.Misc.FILLED_FLUID_CUBE) + addAll(RagiumItems.MISC) + remove(RagiumItems.BACKPACK) + remove(RagiumItems.FILLED_FLUID_CUBE) }.forEach(entries::add) DyeColor.entries.map(HTBackpackItem::createStack).forEach(entries::add) @@ -73,11 +72,7 @@ object RagiumItemGroup { register(FLUID_KEY) { displayName(Text.translatable("itemGroup.ragium.fluid")) - icon { - RagiumContents.Misc.EMPTY_FLUID_CUBE - .asItem() - .defaultStack - } + icon { RagiumItems.EMPTY_FLUID_CUBE.defaultStack } entries { _: ItemGroup.DisplayContext, entries: ItemGroup.Entries -> Registries.FLUID .filter { it.isStill(it.defaultState) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItems.kt new file mode 100644 index 000000000..d4c49e9f7 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumItems.kt @@ -0,0 +1,147 @@ +package hiiragi283.ragium.common.init + +import hiiragi283.ragium.api.content.HTContentRegister +import hiiragi283.ragium.api.extension.itemSettings +import hiiragi283.ragium.common.item.* +import net.minecraft.component.type.FoodComponent +import net.minecraft.component.type.FoodComponents +import net.minecraft.entity.effect.StatusEffectInstance +import net.minecraft.entity.effect.StatusEffects +import net.minecraft.item.Item +import net.minecraft.util.Rarity + +object RagiumItems : HTContentRegister { + // Foods // + + @JvmField + val BEE_WAX: Item = registerItem("bee_wax") + + @JvmField + val BUTTER: Item = registerItem("butter", itemSettings().food(FoodComponents.APPLE)) + + @JvmField + val CARAMEL: Item = registerItem("caramel", itemSettings().food(FoodComponents.DRIED_KELP)) + + @JvmField + val CHOCOLATE: Item = registerItem( + "chocolate", + itemSettings().food( + FoodComponent + .Builder() + .nutrition(3) + .saturationModifier(0.3f) + .statusEffect( + StatusEffectInstance(StatusEffects.STRENGTH, 10 * 20, 0), + 1.0f, + ).snack() + .alwaysEdible() + .build(), + ), + ) + + @JvmField + val CHOCOLATE_APPLE: Item = registerItem("chocolate_apple", itemSettings().food(FoodComponents.COOKED_CHICKEN)) + + @JvmField + val CHOCOLATE_BREAD: Item = registerItem("chocolate_bread", itemSettings().food(FoodComponents.COOKED_BEEF)) + + @JvmField + val FLOUR: Item = registerItem("flour") + + @JvmField + val DOUGH: Item = registerItem("dough") + + @JvmField + val MINCED_MEAT: Item = registerItem("minced_meat") + + @JvmField + val PULP: Item = registerItem("pulp") + + @JvmField + val FOODS: List = listOf( + BEE_WAX, + BUTTER, + CARAMEL, + CHOCOLATE, + CHOCOLATE_APPLE, + CHOCOLATE_BREAD, + FLOUR, + DOUGH, + MINCED_MEAT, + PULP, + ) + + // Misc // + + @JvmField + val BACKPACK: Item = registerItem("backpack", HTBackpackItem) + + @JvmField + val BASALT_MESH: Item = registerItem("basalt_mesh") + + @JvmField + val CRAFTER_HAMMER: Item = registerItem("crafter_hammer", HTCrafterHammerItem) + + @JvmField + val DYNAMITE: Item = registerItem("dynamite", HTDynamiteItem) + + @JvmField + val EMPTY_FLUID_CUBE: Item = registerItem("empty_fluid_cube") + + @JvmField + val FILLED_FLUID_CUBE: Item = registerItem("filled_fluid_cube", HTFilledFluidCubeItem) + + @JvmField + val ENGINE: Item = registerItem("engine") + + @JvmField + val FORGE_HAMMER: Item = registerItem("forge_hammer", HTForgeHammerItem) + + @JvmField + val HEART_OF_THE_NETHER: Item = registerItem("heart_of_the_nether", itemSettings().rarity(Rarity.UNCOMMON)) + + @JvmField + val POLYMER_RESIN: Item = registerItem("polymer_resin") + + @JvmField + val PROCESSOR_SOCKET: Item = registerItem("processor_socket") + + @JvmField + val RAGI_ALLOY_COMPOUND: Item = registerItem("ragi_alloy_compound") + + @JvmField + val RAGI_CRYSTAL_PROCESSOR: Item = registerItem("ragi_crystal_processor") + + @JvmField + val REMOVER_DYNAMITE: Item = registerItem("remover_dynamite", HTRemoverDynamiteItem) + + @JvmField + val SOAP_INGOT: Item = registerItem("soap_ingot") + + @JvmField + val SOLAR_PANEL: Item = registerItem("solar_panel") + + @JvmField + val TRADER_CATALOG: Item = registerItem("trader_catalog") + + @JvmField + val MISC: List = listOf( + BACKPACK, + BASALT_MESH, + CRAFTER_HAMMER, + DYNAMITE, + EMPTY_FLUID_CUBE, + FILLED_FLUID_CUBE, + ENGINE, + FORGE_HAMMER, + HEART_OF_THE_NETHER, + POLYMER_RESIN, + PROCESSOR_SOCKET, + RAGI_ALLOY_COMPOUND, + RAGI_CRYSTAL_PROCESSOR, + REMOVER_DYNAMITE, + SOAP_INGOT, + SOLAR_PANEL, + TRADER_CATALOG, + ) +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMachineKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMachineKeys.kt index 387d9b827..64ad08a03 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMachineKeys.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMachineKeys.kt @@ -72,6 +72,9 @@ object RagiumMachineKeys { @JvmField val MIXER: HTMachineKey = HTMachineKey.of(RagiumAPI.id("mixer")) + @JvmField + val MULTI_SMELTER: HTMachineKey = HTMachineKey.of(RagiumAPI.id("multi_smelter")) + @JvmField val ROCK_GENERATOR: HTMachineKey = HTMachineKey.of(RagiumAPI.id("rock_generator")) @@ -90,6 +93,7 @@ object RagiumMachineKeys { GRINDER, METAL_FORMER, MIXER, + MULTI_SMELTER, ROCK_GENERATOR, SAW_MILL, ) diff --git a/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMaterialKeys.kt b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMaterialKeys.kt new file mode 100644 index 000000000..6cd964718 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/init/RagiumMaterialKeys.kt @@ -0,0 +1,18 @@ +package hiiragi283.ragium.common.init + +import hiiragi283.ragium.api.material.HTMaterialKey + +object RagiumMaterialKeys { + // Tier 1 // + + @JvmField + val CRUDE_RAGINITE: HTMaterialKey = HTMaterialKey.of("crude_raginite") + + // Tier 2 // + + // Tier 3 // + + // Tier 4 // + + // Integration // +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTFilledFluidCubeItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTFilledFluidCubeItem.kt index 7caa89894..6d55d18c9 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTFilledFluidCubeItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTFilledFluidCubeItem.kt @@ -4,8 +4,8 @@ import hiiragi283.ragium.api.extension.dropStackAt import hiiragi283.ragium.api.extension.itemSettings import hiiragi283.ragium.api.fluid.HTFluidDrinkingHandler import hiiragi283.ragium.api.fluid.HTFluidDrinkingHandlerRegistry -import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumComponentTypes +import hiiragi283.ragium.common.init.RagiumItems import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes import net.minecraft.entity.LivingEntity @@ -36,9 +36,7 @@ object HTFilledFluidCubeItem : Item(itemSettings()) { handler.onDrink(stack, world, user) dropStackAt( user, - RagiumContents.Misc.EMPTY_FLUID_CUBE - .asItem() - .defaultStack, + RagiumItems.EMPTY_FLUID_CUBE.defaultStack, ) stack.decrementUnlessCreative(1, user) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/machine/HTMultiSmelterBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/machine/HTMultiSmelterBlockEntity.kt new file mode 100644 index 000000000..130545b40 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/machine/HTMultiSmelterBlockEntity.kt @@ -0,0 +1,67 @@ +package hiiragi283.ragium.common.machine + +import hiiragi283.ragium.api.inventory.* +import hiiragi283.ragium.api.machine.HTMachineKey +import hiiragi283.ragium.api.machine.HTMachineTier +import hiiragi283.ragium.api.machine.block.HTProcessorBlockEntityBase +import hiiragi283.ragium.api.machine.multiblock.HTMultiblockBuilder +import hiiragi283.ragium.api.machine.multiblock.HTMultiblockComponent +import hiiragi283.ragium.api.machine.multiblock.HTMultiblockController +import hiiragi283.ragium.api.recipe.HTFurnaceRecipeProcessor +import hiiragi283.ragium.common.init.RagiumBlockEntityTypes +import hiiragi283.ragium.common.init.RagiumMachineKeys +import hiiragi283.ragium.common.screen.HTSimpleMachineScreenHandler +import net.minecraft.block.BlockState +import net.minecraft.entity.player.PlayerEntity +import net.minecraft.entity.player.PlayerInventory +import net.minecraft.recipe.RecipeType +import net.minecraft.recipe.SmeltingRecipe +import net.minecraft.screen.ScreenHandler +import net.minecraft.util.math.BlockPos +import net.minecraft.world.World + +class HTMultiSmelterBlockEntity(pos: BlockPos, state: BlockState) : + HTProcessorBlockEntityBase(RagiumBlockEntityTypes.MULTI_SMELTER, pos, state), + HTDelegatedInventory.Sided, + HTMultiblockController { + override var key: HTMachineKey = RagiumMachineKeys.MULTI_SMELTER + + constructor(pos: BlockPos, state: BlockState, tier: HTMachineTier) : this(pos, state) { + this.tier = tier + } + + override fun interactWithFluidStorage(player: PlayerEntity): Boolean = false + + override fun createMenu(syncId: Int, playerInventory: PlayerInventory, player: PlayerEntity): ScreenHandler? = + HTSimpleMachineScreenHandler(syncId, playerInventory, packet, createContext()) + + override fun processRecipe(world: World, pos: BlockPos): Boolean = processor.process(world) + + // HTDelegatedInventory.Sided // + + override val parent: HTSidedInventory = HTStorageBuilder(2) + .set(0, HTStorageIO.INPUT, HTStorageSide.ANY) + .set(1, HTStorageIO.OUTPUT, HTStorageSide.ANY) + .buildSided() + + override fun markDirty() { + super.markDirty() + } + + private var processor: HTFurnaceRecipeProcessor = + HTFurnaceRecipeProcessor(RecipeType.SMELTING, parent, 0, 1, tier.smelterMulti) + + override fun onTierUpdated(oldTier: HTMachineTier, newTier: HTMachineTier) { + processor = HTFurnaceRecipeProcessor(RecipeType.SMELTING, parent, 0, 1, newTier.smelterMulti) + } + + // HTMultiblockController // + + override var showPreview: Boolean = false + + override fun buildMultiblock(builder: HTMultiblockBuilder) { + builder.addLayer(-1..1, -1, 1..3, HTMultiblockComponent.of(tier.getBaseBlock())) + builder.addHollow(-1..1, 0, 1..3, HTMultiblockComponent.of(tier.getHull())) + builder.addLayer(-1..1, 1, 1..3, HTMultiblockComponent.of(tier.getStorageBlock())) + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/machine/HTSteamGeneratorBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/machine/HTSteamGeneratorBlockEntity.kt index 7e20d5ee4..918038f1f 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/machine/HTSteamGeneratorBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/machine/HTSteamGeneratorBlockEntity.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.common.machine import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.extension.toStorage import hiiragi283.ragium.api.extension.useTransaction import hiiragi283.ragium.api.inventory.* import hiiragi283.ragium.api.machine.HTMachineKey @@ -136,7 +137,7 @@ class HTSteamGeneratorBlockEntity(pos: BlockPos, state: BlockState) : override fun canInsert(variant: FluidVariant): Boolean = variant == FluidVariant.of(Fluids.WATER) } - override fun getItemStorage(side: Direction?): Storage = parent.wrapStorage(side) + override fun getItemStorage(side: Direction?): Storage = parent.toStorage(side) override fun getFluidStorage(side: Direction?): Storage = FilteringStorage.insertOnlyOf(fluidStorage) diff --git a/src/main/kotlin/hiiragi283/ragium/common/screen/HTLargeMachineScreenHandler.kt b/src/main/kotlin/hiiragi283/ragium/common/screen/HTLargeMachineScreenHandler.kt index 455721192..ea8f40457 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/screen/HTLargeMachineScreenHandler.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/screen/HTLargeMachineScreenHandler.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.common.screen import hiiragi283.ragium.api.extension.getInventory import hiiragi283.ragium.api.machine.HTMachinePacket -import hiiragi283.ragium.api.machine.HTMachineType import hiiragi283.ragium.api.screen.HTMachineScreenHandlerBase import hiiragi283.ragium.common.init.RagiumScreenHandlerTypes import net.minecraft.entity.player.PlayerInventory @@ -19,7 +18,7 @@ class HTLargeMachineScreenHandler( playerInv, packet, ctx, - ctx.getInventory(HTMachineType.Size.LARGE), + ctx.getInventory(7), ) { init { inventory.onOpen(player) diff --git a/src/main/kotlin/hiiragi283/ragium/common/screen/HTSimpleMachineScreenHandler.kt b/src/main/kotlin/hiiragi283/ragium/common/screen/HTSimpleMachineScreenHandler.kt index 17a0ef7d5..3ab8f1f02 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/screen/HTSimpleMachineScreenHandler.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/screen/HTSimpleMachineScreenHandler.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.common.screen import hiiragi283.ragium.api.extension.getInventory import hiiragi283.ragium.api.machine.HTMachinePacket -import hiiragi283.ragium.api.machine.HTMachineType import hiiragi283.ragium.api.screen.HTMachineScreenHandlerBase import hiiragi283.ragium.common.init.RagiumScreenHandlerTypes import net.minecraft.entity.player.PlayerInventory @@ -19,7 +18,7 @@ class HTSimpleMachineScreenHandler( playerInv, packet, ctx, - ctx.getInventory(HTMachineType.Size.SIMPLE), + ctx.getInventory(2), ) { init { inventory.onOpen(player) diff --git a/src/main/kotlin/hiiragi283/ragium/common/unused/HTFluidCubeItem.kt b/src/main/kotlin/hiiragi283/ragium/common/unused/HTFluidCubeItem.kt index e7812f87e..3725c526e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/unused/HTFluidCubeItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/unused/HTFluidCubeItem.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.common.unused import hiiragi283.ragium.api.extension.dropStackAt import hiiragi283.ragium.api.extension.itemSettings -import hiiragi283.ragium.common.RagiumContents +import hiiragi283.ragium.common.init.RagiumItems import net.minecraft.entity.LivingEntity import net.minecraft.entity.player.PlayerEntity import net.minecraft.item.Item @@ -13,15 +13,12 @@ import net.minecraft.util.TypedActionResult import net.minecraft.util.UseAction import net.minecraft.world.World -open class HTFluidCubeItem(settings: Settings = itemSettings()) : - Item(settings.recipeRemainder(RagiumContents.Misc.EMPTY_FLUID_CUBE.asItem())) { +open class HTFluidCubeItem(settings: Settings = itemSettings()) : Item(settings.recipeRemainder(RagiumItems.EMPTY_FLUID_CUBE)) { override fun finishUsing(stack: ItemStack, world: World, user: LivingEntity): ItemStack { onDrink(stack, world, user) dropStackAt( user, - RagiumContents.Misc.EMPTY_FLUID_CUBE - .asItem() - .defaultStack, + RagiumItems.EMPTY_FLUID_CUBE.defaultStack, ) stack.decrementUnlessCreative(1, user) return stack diff --git a/src/main/kotlin/hiiragi283/ragium/common/unused/RagiumFluids.kt b/src/main/kotlin/hiiragi283/ragium/common/unused/RagiumFluids.kt deleted file mode 100644 index c6194844a..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/unused/RagiumFluids.kt +++ /dev/null @@ -1,28 +0,0 @@ -package hiiragi283.ragium.common.unused - -import hiiragi283.ragium.api.RagiumAPI -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributeHandler -import net.minecraft.sound.SoundEvent -import net.minecraft.sound.SoundEvents -import net.minecraft.world.World -import java.util.* - -object RagiumFluids { - @JvmField - val PETROLEUM: HTFluidContent = register("petroleum") - - @JvmStatic - fun init() { - PETROLEUM.registerAttributes(object : FluidVariantAttributeHandler { - override fun getViscosity(variant: FluidVariant, world: World?): Int = 6000 - - override fun getFillSound(variant: FluidVariant): Optional = Optional.of(SoundEvents.ITEM_BUCKET_FILL_LAVA) - - override fun getEmptySound(variant: FluidVariant): Optional = Optional.of(SoundEvents.ITEM_BUCKET_EMPTY_LAVA) - }) - } - - private fun register(name: String, builderAction: HTFlowableFluid.Settings.() -> Unit = {}): HTFluidContent = - HTFluidContent.create(RagiumAPI.id(name), builderAction) -} diff --git a/src/main/kotlin/hiiragi283/ragium/data/RagiumAdvancementProvider.kt b/src/main/kotlin/hiiragi283/ragium/data/RagiumAdvancementProvider.kt index c27f39dc3..8196e9a1b 100644 --- a/src/main/kotlin/hiiragi283/ragium/data/RagiumAdvancementProvider.kt +++ b/src/main/kotlin/hiiragi283/ragium/data/RagiumAdvancementProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.ragium.api.machine.HTMachine import hiiragi283.ragium.api.machine.HTMachineTier import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumBlocks +import hiiragi283.ragium.common.init.RagiumItems import hiiragi283.ragium.common.init.RagiumMachineKeys import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider @@ -116,9 +117,9 @@ class RagiumAdvancementProvider(output: FabricDataOutput, registryLookup: Comple .createChild( "tier1/ragi_alloy_plate", manualForge, - RagiumContents.Misc.FORGE_HAMMER, + RagiumItems.FORGE_HAMMER, ) { - hasItems(RagiumContents.Misc.FORGE_HAMMER) + hasItems(RagiumItems.FORGE_HAMMER) }.putEnglish("") .putEnglishDesc("Obtain Ragi-Alloy Plate") .putJapanese("") @@ -309,9 +310,9 @@ class RagiumAdvancementProvider(output: FabricDataOutput, registryLookup: Comple .createChild( "tier2/soap", mixer, - RagiumContents.Misc.SOAP_INGOT, + RagiumItems.SOAP_INGOT, ) { - hasItems(RagiumContents.Misc.SOAP_INGOT) + hasItems(RagiumItems.SOAP_INGOT) }.putEnglish("BIG BROTHER IS WASHING YOU...") .putEnglishDesc("Craft Soap Ingot") .putJapanese("ビッグブラザーはあなたを洗っている...") @@ -407,7 +408,7 @@ class RagiumAdvancementProvider(output: FabricDataOutput, registryLookup: Comple .createChild( "tier3/distillation_tower", refinedRagiSteelHull, - RagiumContents.Misc.EMPTY_FLUID_CUBE, + RagiumItems.EMPTY_FLUID_CUBE, ) { buildMultiblock(RagiumMachineKeys.DISTILLATION_TOWER, HTMachineTier.PRIMITIVE) }.putEnglish("GregTech is waiting for you :)") diff --git a/src/main/kotlin/hiiragi283/ragium/data/RagiumMachineRecipeProvider.kt b/src/main/kotlin/hiiragi283/ragium/data/RagiumMachineRecipeProvider.kt index 303ed8a32..bb6bd678d 100644 --- a/src/main/kotlin/hiiragi283/ragium/data/RagiumMachineRecipeProvider.kt +++ b/src/main/kotlin/hiiragi283/ragium/data/RagiumMachineRecipeProvider.kt @@ -9,6 +9,8 @@ import hiiragi283.ragium.api.tags.RagiumFluidTags import hiiragi283.ragium.api.tags.RagiumItemTags import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumBlocks +import hiiragi283.ragium.common.init.RagiumFluids +import hiiragi283.ragium.common.init.RagiumItems import hiiragi283.ragium.common.init.RagiumMachineKeys import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider @@ -81,8 +83,8 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.ALLOY_FURNACE) - .fluidInput(RagiumContents.Fluids.BATTER) - .itemInput(RagiumContents.Foods.BUTTER) + .fluidInput(RagiumFluids.BATTER) + .itemInput(RagiumItems.BUTTER) .itemOutput(RagiumBlocks.SPONGE_CAKE) .offerTo(exporter, RagiumBlocks.SPONGE_CAKE) } @@ -94,20 +96,20 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co .create(RagiumMachineKeys.ASSEMBLER) .itemInput(RagiumContents.Plates.STEEL, 8) .itemInput(RagiumContents.Plates.RAGI_STEEL, 8) - .itemOutput(RagiumContents.Misc.ENGINE) - .offerTo(exporter, RagiumContents.Misc.ENGINE) + .itemOutput(RagiumItems.ENGINE) + .offerTo(exporter, RagiumItems.ENGINE) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.ASSEMBLER, HTMachineTier.ADVANCED) .itemInput(RagiumContents.Gems.RAGI_CRYSTAL, 8) - .itemInput(RagiumContents.Misc.PROCESSOR_SOCKET) - .itemOutput(RagiumContents.Misc.RAGI_CRYSTAL_PROCESSOR) - .offerTo(exporter, RagiumContents.Misc.RAGI_CRYSTAL_PROCESSOR) + .itemInput(RagiumItems.PROCESSOR_SOCKET) + .itemOutput(RagiumItems.RAGI_CRYSTAL_PROCESSOR) + .offerTo(exporter, RagiumItems.RAGI_CRYSTAL_PROCESSOR) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.ASSEMBLER, HTMachineTier.BASIC) .itemInput(RagiumContents.Plates.ALUMINUM, 4) - .itemInput(RagiumContents.Misc.BASALT_MESH, 4) + .itemInput(RagiumItems.BASALT_MESH, 4) .itemOutput(RagiumContents.Plates.STELLA) .offerTo(exporter, RagiumContents.Plates.STELLA) // circuits @@ -208,7 +210,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.BLAST_FURNACE, HTMachineTier.ADVANCED) .itemInput(ItemTags.COALS, 8) - .fluidInput(RagiumContents.Fluids.ALUMINA_SOLUTION) + .fluidInput(RagiumFluids.ALUMINA_SOLUTION) .itemOutput(RagiumContents.Ingots.ALUMINUM) .offerTo(exporter, RagiumContents.Ingots.ALUMINUM) } @@ -218,75 +220,75 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun chemicalReactor(exporter: RecipeExporter) { HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) - .fluidInput(RagiumContents.Fluids.REFINED_GAS) + .fluidInput(RagiumFluids.REFINED_GAS) .fluidInput(Fluids.WATER) .catalyst(Items.HEART_OF_THE_SEA) - .fluidOutput(RagiumContents.Fluids.HYDROGEN) - .fluidOutput(RagiumContents.Fluids.ALCOHOL) - .offerTo(exporter, RagiumContents.Fluids.ALCOHOL) + .fluidOutput(RagiumFluids.HYDROGEN) + .fluidOutput(RagiumFluids.ALCOHOL) + .offerTo(exporter, RagiumFluids.ALCOHOL) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR, HTMachineTier.BASIC) .itemInput(RagiumContents.Dusts.SULFUR) .fluidInput(Fluids.WATER) - .fluidOutput(RagiumContents.Fluids.SULFURIC_ACID) - .offerTo(exporter, RagiumContents.Fluids.SULFURIC_ACID) + .fluidOutput(RagiumFluids.SULFURIC_ACID) + .offerTo(exporter, RagiumFluids.SULFURIC_ACID) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR, HTMachineTier.BASIC) .itemInput(RagiumContents.Dusts.NITER) .fluidInput(Fluids.WATER) - .fluidOutput(RagiumContents.Fluids.NITRIC_ACID) - .offerTo(exporter, RagiumContents.Fluids.NITRIC_ACID) + .fluidOutput(RagiumFluids.NITRIC_ACID) + .offerTo(exporter, RagiumFluids.NITRIC_ACID) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) .itemInput(RagiumContents.Dusts.BAUXITE) - .fluidInput(RagiumContents.Fluids.SODIUM_HYDROXIDE) - .fluidOutput(RagiumContents.Fluids.ALUMINA_SOLUTION) - .offerTo(exporter, RagiumContents.Fluids.ALUMINA_SOLUTION) + .fluidInput(RagiumFluids.SODIUM_HYDROXIDE) + .fluidOutput(RagiumFluids.ALUMINA_SOLUTION) + .offerTo(exporter, RagiumFluids.ALUMINA_SOLUTION) // Fuels HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) - .fluidInput(RagiumContents.Fluids.ALCOHOL, FluidConstants.BUCKET * 3) + .fluidInput(RagiumFluids.ALCOHOL, FluidConstants.BUCKET * 3) .fluidInput(RagiumFluidTags.ORGANIC_OILS) - .fluidOutput(RagiumContents.Fluids.BIO_FUEL, FluidConstants.BUCKET * 3) - .fluidOutput(RagiumContents.Fluids.GLYCEROL) - .offerTo(exporter, RagiumContents.Fluids.BIO_FUEL) + .fluidOutput(RagiumFluids.BIO_FUEL, FluidConstants.BUCKET * 3) + .fluidOutput(RagiumFluids.GLYCEROL) + .offerTo(exporter, RagiumFluids.BIO_FUEL) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) .fluidInput(RagiumFluidTags.FUEL) - .fluidInput(RagiumContents.Fluids.MIXTURE_ACID, FluidConstants.BUCKET / 4) - .fluidOutput(RagiumContents.Fluids.NITRO_FUEL, FluidConstants.BUCKET / 4) - .offerTo(exporter, RagiumContents.Fluids.NITRO_FUEL) + .fluidInput(RagiumFluids.MIXTURE_ACID, FluidConstants.BUCKET / 4) + .fluidOutput(RagiumFluids.NITRO_FUEL, FluidConstants.BUCKET / 4) + .offerTo(exporter, RagiumFluids.NITRO_FUEL) // Dynamite HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR, HTMachineTier.BASIC) - .fluidInput(RagiumContents.Fluids.GLYCEROL) - .fluidInput(RagiumContents.Fluids.MIXTURE_ACID, FluidConstants.BUCKET * 3) - .fluidOutput(RagiumContents.Fluids.NITRO_GLYCERIN) - .offerTo(exporter, RagiumContents.Fluids.NITRO_GLYCERIN) + .fluidInput(RagiumFluids.GLYCEROL) + .fluidInput(RagiumFluids.MIXTURE_ACID, FluidConstants.BUCKET * 3) + .fluidOutput(RagiumFluids.NITRO_GLYCERIN) + .offerTo(exporter, RagiumFluids.NITRO_GLYCERIN) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) .itemInput(Items.PAPER) .itemInput(ConventionalItemTags.STRINGS) - .fluidInput(RagiumContents.Fluids.NITRO_GLYCERIN) - .itemOutput(RagiumContents.Misc.DYNAMITE, 2) - .offerTo(exporter, RagiumContents.Misc.DYNAMITE) + .fluidInput(RagiumFluids.NITRO_GLYCERIN) + .itemOutput(RagiumItems.DYNAMITE, 2) + .offerTo(exporter, RagiumItems.DYNAMITE) // TNT HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR, HTMachineTier.ADVANCED) - .fluidInput(RagiumContents.Fluids.AROMATIC_COMPOUNDS) - .fluidInput(RagiumContents.Fluids.MIXTURE_ACID, FluidConstants.BUCKET * 3) - .fluidOutput(RagiumContents.Fluids.TRINITROTOLUENE) - .offerTo(exporter, RagiumContents.Fluids.TRINITROTOLUENE) + .fluidInput(RagiumFluids.AROMATIC_COMPOUNDS) + .fluidInput(RagiumFluids.MIXTURE_ACID, FluidConstants.BUCKET * 3) + .fluidOutput(RagiumFluids.TRINITROTOLUENE) + .offerTo(exporter, RagiumFluids.TRINITROTOLUENE) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR, HTMachineTier.ADVANCED) - .fluidInput(RagiumContents.Fluids.TRINITROTOLUENE) + .fluidInput(RagiumFluids.TRINITROTOLUENE) .itemInput(ItemTags.SAND) .itemOutput(Items.TNT, 12) .offerTo(exporter, Items.TNT) @@ -294,14 +296,14 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co // Plastics HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) - .itemInput(RagiumContents.Misc.POLYMER_RESIN) + .itemInput(RagiumItems.POLYMER_RESIN) .itemOutput(RagiumContents.Plates.PLASTIC) .offerTo(exporter, RagiumContents.Plates.PLASTIC) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) - .itemInput(RagiumContents.Misc.POLYMER_RESIN, 4) - .itemInput(RagiumContents.Misc.BASALT_MESH) + .itemInput(RagiumItems.POLYMER_RESIN, 4) + .itemInput(RagiumItems.BASALT_MESH) .itemOutput(RagiumContents.Plates.ENGINEERING_PLASTIC) .offerTo(exporter, RagiumContents.Plates.ENGINEERING_PLASTIC) @@ -320,7 +322,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) .itemInput(before) - .fluidInput(RagiumContents.Fluids.OXYGEN, FluidConstants.INGOT) + .fluidInput(RagiumFluids.OXYGEN, FluidConstants.INGOT) .itemOutput(after) .offerTo(exporter, after) } @@ -331,45 +333,45 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co // crude oil -> polymer resin + fuel HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.DISTILLATION_TOWER) - .fluidInput(RagiumContents.Fluids.CRUDE_OIL, FluidConstants.BUCKET * 8) - .itemOutput(RagiumContents.Misc.POLYMER_RESIN, 4) - .fluidOutput(RagiumContents.Fluids.FUEL, FluidConstants.BUCKET * 4) - .offerTo(exporter, RagiumContents.Fluids.CRUDE_OIL) + .fluidInput(RagiumFluids.CRUDE_OIL, FluidConstants.BUCKET * 8) + .itemOutput(RagiumItems.POLYMER_RESIN, 4) + .fluidOutput(RagiumFluids.FUEL, FluidConstants.BUCKET * 4) + .offerTo(exporter, RagiumFluids.CRUDE_OIL) // crude oil -> refined gas HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.DISTILLATION_TOWER) - .fluidInput(RagiumContents.Fluids.CRUDE_OIL, FluidConstants.BUCKET * 8) + .fluidInput(RagiumFluids.CRUDE_OIL, FluidConstants.BUCKET * 8) .catalyst(RagiumContents.Circuits.BASIC) - .fluidOutput(RagiumContents.Fluids.REFINED_GAS, FluidConstants.BUCKET * 5) - .fluidOutput(RagiumContents.Fluids.RESIDUAL_OIL, FluidConstants.BUCKET * 3) - .offerTo(exporter, RagiumContents.Misc.POLYMER_RESIN) + .fluidOutput(RagiumFluids.REFINED_GAS, FluidConstants.BUCKET * 5) + .fluidOutput(RagiumFluids.RESIDUAL_OIL, FluidConstants.BUCKET * 3) + .offerTo(exporter, RagiumItems.POLYMER_RESIN) // crude oil -> naphtha HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.DISTILLATION_TOWER) - .fluidInput(RagiumContents.Fluids.CRUDE_OIL, FluidConstants.BUCKET * 8) + .fluidInput(RagiumFluids.CRUDE_OIL, FluidConstants.BUCKET * 8) .catalyst(RagiumContents.Circuits.ADVANCED) - .fluidOutput(RagiumContents.Fluids.NAPHTHA, FluidConstants.BUCKET * 5) - .fluidOutput(RagiumContents.Fluids.RESIDUAL_OIL, FluidConstants.BUCKET * 3) - .offerTo(exporter, RagiumContents.Fluids.FUEL) + .fluidOutput(RagiumFluids.NAPHTHA, FluidConstants.BUCKET * 5) + .fluidOutput(RagiumFluids.RESIDUAL_OIL, FluidConstants.BUCKET * 3) + .offerTo(exporter, RagiumFluids.FUEL) // residual oil -> fuel + aromatic compound HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.DISTILLATION_TOWER) - .fluidInput(RagiumContents.Fluids.RESIDUAL_OIL, FluidConstants.BUCKET * 8) + .fluidInput(RagiumFluids.RESIDUAL_OIL, FluidConstants.BUCKET * 8) .catalyst(RagiumContents.Circuits.PRIMITIVE) - .fluidOutput(RagiumContents.Fluids.FUEL, FluidConstants.BUCKET * 3) - .fluidOutput(RagiumContents.Fluids.AROMATIC_COMPOUNDS, FluidConstants.BUCKET * 5) - .offerTo(exporter, RagiumContents.Fluids.AROMATIC_COMPOUNDS) + .fluidOutput(RagiumFluids.FUEL, FluidConstants.BUCKET * 3) + .fluidOutput(RagiumFluids.AROMATIC_COMPOUNDS, FluidConstants.BUCKET * 5) + .offerTo(exporter, RagiumFluids.AROMATIC_COMPOUNDS) // residual oil -> fuel + asphalt HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.DISTILLATION_TOWER) - .fluidInput(RagiumContents.Fluids.RESIDUAL_OIL, FluidConstants.BUCKET * 8) - .fluidOutput(RagiumContents.Fluids.FUEL, FluidConstants.BUCKET * 3) - .fluidOutput(RagiumContents.Fluids.ASPHALT, FluidConstants.BUCKET * 5) - .offerTo(exporter, RagiumContents.Fluids.ASPHALT) + .fluidInput(RagiumFluids.RESIDUAL_OIL, FluidConstants.BUCKET * 8) + .fluidOutput(RagiumFluids.FUEL, FluidConstants.BUCKET * 3) + .fluidOutput(RagiumFluids.ASPHALT, FluidConstants.BUCKET * 5) + .offerTo(exporter, RagiumFluids.ASPHALT) } // Electrolyzer // @@ -378,17 +380,17 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.ELECTROLYZER) .fluidInput(Fluids.WATER) - .fluidOutput(RagiumContents.Fluids.HYDROGEN, FluidConstants.BUCKET * 2) - .fluidOutput(RagiumContents.Fluids.OXYGEN) + .fluidOutput(RagiumFluids.HYDROGEN, FluidConstants.BUCKET * 2) + .fluidOutput(RagiumFluids.OXYGEN) .offerTo(exporter, Fluids.WATER) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.ELECTROLYZER) - .fluidInput(RagiumContents.Fluids.SALT_WATER) - .itemOutput(RagiumAPI.getInstance().createFilledCube(RagiumContents.Fluids.SODIUM_HYDROXIDE.value)) - .fluidOutput(RagiumContents.Fluids.HYDROGEN) - .fluidOutput(RagiumContents.Fluids.CHLORINE) - .offerTo(exporter, RagiumContents.Fluids.SALT_WATER) + .fluidInput(RagiumFluids.SALT_WATER) + .itemOutput(RagiumAPI.getInstance().createFilledCube(RagiumFluids.SODIUM_HYDROXIDE.value)) + .fluidOutput(RagiumFluids.HYDROGEN) + .fluidOutput(RagiumFluids.CHLORINE) + .offerTo(exporter, RagiumFluids.SALT_WATER) } // Extractor // @@ -397,77 +399,77 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(ItemTags.VILLAGER_PLANTABLE_SEEDS, 4) - .fluidOutput(RagiumContents.Fluids.SEED_OIL) - .offerTo(exporter, RagiumContents.Fluids.SEED_OIL) + .fluidOutput(RagiumFluids.SEED_OIL) + .offerTo(exporter, RagiumFluids.SEED_OIL) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(RagiumItemTags.PROTEIN_FOODS, 4) - .fluidOutput(RagiumContents.Fluids.TALLOW) - .offerTo(exporter, RagiumContents.Fluids.TALLOW) + .fluidOutput(RagiumFluids.TALLOW) + .offerTo(exporter, RagiumFluids.TALLOW) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(Items.SMOOTH_BASALT) - .itemOutput(RagiumContents.Misc.BASALT_MESH) - .offerTo(exporter, RagiumContents.Misc.BASALT_MESH) + .itemOutput(RagiumItems.BASALT_MESH) + .offerTo(exporter, RagiumItems.BASALT_MESH) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) - .itemInput(RagiumContents.Foods.CHOCOLATE) - .fluidOutput(RagiumContents.Fluids.CHOCOLATE) - .offerTo(exporter, RagiumContents.Fluids.CHOCOLATE) + .itemInput(RagiumItems.CHOCOLATE) + .fluidOutput(RagiumFluids.CHOCOLATE) + .offerTo(exporter, RagiumFluids.CHOCOLATE) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(Items.SUGAR, 4) - .fluidOutput(RagiumContents.Fluids.STARCH_SYRUP) - .offerTo(exporter, RagiumContents.Fluids.STARCH_SYRUP) + .fluidOutput(RagiumFluids.STARCH_SYRUP) + .offerTo(exporter, RagiumFluids.STARCH_SYRUP) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(Items.SWEET_BERRIES, 4) - .fluidOutput(RagiumContents.Fluids.SWEET_BERRIES) - .offerTo(exporter, RagiumContents.Fluids.SWEET_BERRIES) + .fluidOutput(RagiumFluids.SWEET_BERRIES) + .offerTo(exporter, RagiumFluids.SWEET_BERRIES) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .fluidInput(ConventionalFluidTags.MILK) - .itemOutput(RagiumContents.Foods.BUTTER) - .offerTo(exporter, RagiumContents.Foods.BUTTER) + .itemOutput(RagiumItems.BUTTER) + .offerTo(exporter, RagiumItems.BUTTER) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(Items.SOUL_SAND) .itemOutput(Items.SAND) - .fluidOutput(RagiumContents.Fluids.CRUDE_OIL) - .offerTo(exporter, RagiumContents.Fluids.CRUDE_OIL, "_from_soul_sand") + .fluidOutput(RagiumFluids.CRUDE_OIL) + .offerTo(exporter, RagiumFluids.CRUDE_OIL, "_from_soul_sand") HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.EXTRACTOR) .itemInput(Items.SOUL_SOIL) .itemOutput(Items.SAND) - .fluidOutput(RagiumContents.Fluids.CRUDE_OIL) - .offerTo(exporter, RagiumContents.Fluids.CRUDE_OIL, "_from_soul_soil") + .fluidOutput(RagiumFluids.CRUDE_OIL) + .offerTo(exporter, RagiumFluids.CRUDE_OIL, "_from_soul_soil") } // Fluid Drill // private fun fluidDrill(exporter: RecipeExporter) { - registerDrilling(exporter, BiomeKeys.WARM_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.LUKEWARM_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.DEEP_LUKEWARM_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.DEEP_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.COLD_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.DEEP_COLD_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.FROZEN_OCEAN, RagiumContents.Fluids.SALT_WATER) - registerDrilling(exporter, BiomeKeys.DEEP_FROZEN_OCEAN, RagiumContents.Fluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.WARM_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.LUKEWARM_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.DEEP_LUKEWARM_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.DEEP_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.COLD_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.DEEP_COLD_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.FROZEN_OCEAN, RagiumFluids.SALT_WATER) + registerDrilling(exporter, BiomeKeys.DEEP_FROZEN_OCEAN, RagiumFluids.SALT_WATER) registerDrilling(exporter, BiomeKeys.NETHER_WASTES, Fluids.LAVA) registerDrilling(exporter, BiomeKeys.WARPED_FOREST, Fluids.LAVA) registerDrilling(exporter, BiomeKeys.CRIMSON_FOREST, Fluids.LAVA) - registerDrilling(exporter, BiomeKeys.SOUL_SAND_VALLEY, RagiumContents.Fluids.CRUDE_OIL) + registerDrilling(exporter, BiomeKeys.SOUL_SAND_VALLEY, RagiumFluids.CRUDE_OIL) registerDrilling(exporter, BiomeKeys.BASALT_DELTAS, Fluids.LAVA) } @@ -479,7 +481,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter, biomeKey.value)*/ } - private fun registerDrilling(exporter: RecipeExporter, biomeKey: RegistryKey, fluid: RagiumContents.Fluids) { + private fun registerDrilling(exporter: RecipeExporter, biomeKey: RegistryKey, fluid: RagiumFluids) { /*HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.FLUID_DRILL) .addOutput(fluid) @@ -491,31 +493,31 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun grinder(exporter: RecipeExporter) { registerGrinder(exporter, ConventionalItemTags.COBBLESTONES to 1, Items.GRAVEL to 1) - registerGrinder(exporter, ConventionalItemTags.WHEAT_CROPS to 1, RagiumContents.Foods.FLOUR to 1) + registerGrinder(exporter, ConventionalItemTags.WHEAT_CROPS to 1, RagiumItems.FLOUR to 1) registerGrinder(exporter, Items.ANCIENT_DEBRIS to 1, Items.NETHERITE_SCRAP to 2) registerGrinder(exporter, Items.COARSE_DIRT to 1, Items.DIRT to 1) registerGrinder(exporter, Items.DEEPSLATE to 1, Items.COBBLED_DEEPSLATE to 1) registerGrinder(exporter, Items.GRAVEL to 1, Items.SAND to 1, suffix = "_from_gravel") registerGrinder(exporter, Items.STONE to 1, Items.COBBLESTONE to 1) - registerGrinder(exporter, ItemTags.BOATS to 1, RagiumContents.Foods.PULP to 5, suffix = "_from_boat") + registerGrinder(exporter, ItemTags.BOATS to 1, RagiumItems.PULP to 5, suffix = "_from_boat") registerGrinder(exporter, ItemTags.COAL_ORES to 1, Items.COAL to 2) registerGrinder(exporter, ItemTags.DIAMOND_ORES to 1, Items.DIAMOND to 2) registerGrinder(exporter, ItemTags.EMERALD_ORES to 1, Items.EMERALD to 2) - registerGrinder(exporter, ItemTags.FENCE_GATES to 1, RagiumContents.Foods.PULP to 4, suffix = "_from_fence_gate") + registerGrinder(exporter, ItemTags.FENCE_GATES to 1, RagiumItems.PULP to 4, suffix = "_from_fence_gate") registerGrinder(exporter, ItemTags.LAPIS_ORES to 1, Items.LAPIS_LAZULI to 8) - registerGrinder(exporter, ItemTags.LOGS to 1, RagiumContents.Foods.PULP to 4, suffix = "_from_log") - registerGrinder(exporter, ItemTags.PLANKS to 1, RagiumContents.Foods.PULP to 1, suffix = "_from_plank") + registerGrinder(exporter, ItemTags.LOGS to 1, RagiumItems.PULP to 4, suffix = "_from_log") + registerGrinder(exporter, ItemTags.PLANKS to 1, RagiumItems.PULP to 1, suffix = "_from_plank") registerGrinder(exporter, ItemTags.REDSTONE_ORES to 1, Items.REDSTONE to 8) - registerGrinder(exporter, ItemTags.SAPLINGS to 2, RagiumContents.Foods.PULP to 1, suffix = "_from_sapling") - registerGrinder(exporter, ItemTags.WOODEN_BUTTONS to 1, RagiumContents.Foods.PULP to 1, suffix = "_from_button") - registerGrinder(exporter, ItemTags.WOODEN_DOORS to 1, RagiumContents.Foods.PULP to 2, suffix = "_from_door") - registerGrinder(exporter, ItemTags.WOODEN_FENCES to 3, RagiumContents.Foods.PULP to 5, suffix = "_from_fence") - registerGrinder(exporter, ItemTags.WOODEN_PRESSURE_PLATES to 1, RagiumContents.Foods.PULP to 2, suffix = "_from_plate") - registerGrinder(exporter, ItemTags.WOODEN_SLABS to 2, RagiumContents.Foods.PULP to 1, suffix = "_from_slab") - registerGrinder(exporter, ItemTags.WOODEN_STAIRS to 4, RagiumContents.Foods.PULP to 6, suffix = "_from_stair") - registerGrinder(exporter, ItemTags.WOODEN_TRAPDOORS to 1, RagiumContents.Foods.PULP to 3, suffix = "_from_trap_door") + registerGrinder(exporter, ItemTags.SAPLINGS to 2, RagiumItems.PULP to 1, suffix = "_from_sapling") + registerGrinder(exporter, ItemTags.WOODEN_BUTTONS to 1, RagiumItems.PULP to 1, suffix = "_from_button") + registerGrinder(exporter, ItemTags.WOODEN_DOORS to 1, RagiumItems.PULP to 2, suffix = "_from_door") + registerGrinder(exporter, ItemTags.WOODEN_FENCES to 3, RagiumItems.PULP to 5, suffix = "_from_fence") + registerGrinder(exporter, ItemTags.WOODEN_PRESSURE_PLATES to 1, RagiumItems.PULP to 2, suffix = "_from_plate") + registerGrinder(exporter, ItemTags.WOODEN_SLABS to 2, RagiumItems.PULP to 1, suffix = "_from_slab") + registerGrinder(exporter, ItemTags.WOODEN_STAIRS to 4, RagiumItems.PULP to 6, suffix = "_from_stair") + registerGrinder(exporter, ItemTags.WOODEN_TRAPDOORS to 1, RagiumItems.PULP to 3, suffix = "_from_trap_door") registerGrinder(exporter, ItemTags.WOOL to 1, Items.STRING to 4) - registerGrinder(exporter, RagiumItemTags.PROTEIN_FOODS to 1, RagiumContents.Foods.MINCED_MEAT to 1) + registerGrinder(exporter, RagiumItemTags.PROTEIN_FOODS to 1, RagiumItems.MINCED_MEAT to 1) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.GRINDER) @@ -542,7 +544,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co .create(RagiumMachineKeys.GRINDER) .itemInput(ConventionalItemTags.SUGAR_CANE_CROPS) .itemOutput(Items.SUGAR, 2) - .itemOutput(RagiumContents.Foods.PULP) + .itemOutput(RagiumItems.PULP) .offerTo(exporter, Items.SUGAR) } @@ -613,27 +615,27 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co .create(RagiumMachineKeys.MIXER) .itemInput(RagiumItemTags.ALKALI) .fluidInput(RagiumFluidTags.ORGANIC_OILS) - .itemOutput(RagiumContents.Misc.SOAP_INGOT) - .fluidOutput(RagiumContents.Fluids.GLYCEROL) - .offerTo(exporter, RagiumContents.Misc.SOAP_INGOT) + .itemOutput(RagiumItems.SOAP_INGOT) + .fluidOutput(RagiumFluids.GLYCEROL) + .offerTo(exporter, RagiumItems.SOAP_INGOT) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.FLOUR) + .itemInput(RagiumItems.FLOUR) .fluidInput(Fluids.WATER, FluidConstants.BOTTLE) - .itemOutput(RagiumContents.Foods.DOUGH) - .offerTo(exporter, RagiumContents.Foods.DOUGH) + .itemOutput(RagiumItems.DOUGH) + .offerTo(exporter, RagiumItems.DOUGH) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.PULP) + .itemInput(RagiumItems.PULP) .fluidInput(Fluids.WATER) .itemOutput(Items.PAPER) .offerTo(exporter, Items.PAPER) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.PULP) + .itemInput(RagiumItems.PULP) .itemInput(RagiumItemTags.ALKALI) .fluidInput(Fluids.WATER) .itemOutput(Items.PAPER, 2) @@ -641,40 +643,40 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.PULP) - .fluidInput(RagiumContents.Fluids.SULFURIC_ACID) + .itemInput(RagiumItems.PULP) + .fluidInput(RagiumFluids.SULFURIC_ACID) .itemOutput(Items.PAPER, 4) .offerTo(exporter, Items.PAPER, "_from_acid") HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.BUTTER) + .itemInput(RagiumItems.BUTTER) .itemInput(Items.SUGAR) .fluidInput(ConventionalFluidTags.MILK) - .itemOutput(RagiumContents.Foods.CARAMEL, 4) - .offerTo(exporter, RagiumContents.Foods.CARAMEL) + .itemOutput(RagiumItems.CARAMEL, 4) + .offerTo(exporter, RagiumItems.CARAMEL) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) .itemInput(Items.COCOA_BEANS) .itemInput(Items.SUGAR) .fluidInput(ConventionalFluidTags.MILK) - .itemOutput(RagiumContents.Foods.CHOCOLATE) - .offerTo(exporter, RagiumContents.Foods.CHOCOLATE) + .itemOutput(RagiumItems.CHOCOLATE) + .offerTo(exporter, RagiumItems.CHOCOLATE) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .itemInput(RagiumContents.Foods.FLOUR) + .itemInput(RagiumItems.FLOUR) .fluidInput(ConventionalFluidTags.MILK) - .fluidOutput(RagiumContents.Fluids.BATTER) - .offerTo(exporter, RagiumContents.Fluids.BATTER) + .fluidOutput(RagiumFluids.BATTER) + .offerTo(exporter, RagiumFluids.BATTER) HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) - .fluidInput(RagiumContents.Fluids.NITRIC_ACID) - .fluidInput(RagiumContents.Fluids.SULFURIC_ACID) - .fluidOutput(RagiumContents.Fluids.MIXTURE_ACID, FluidConstants.BUCKET * 2) - .offerTo(exporter, RagiumContents.Fluids.MIXTURE_ACID) + .fluidInput(RagiumFluids.NITRIC_ACID) + .fluidInput(RagiumFluids.SULFURIC_ACID) + .fluidOutput(RagiumFluids.MIXTURE_ACID, FluidConstants.BUCKET * 2) + .offerTo(exporter, RagiumFluids.MIXTURE_ACID) registerBreaching(exporter, ConventionalItemTags.CONCRETE_POWDERS, Items.WHITE_CONCRETE_POWDER) registerBreaching(exporter, ConventionalItemTags.CONCRETES, Items.WHITE_CONCRETE) @@ -704,7 +706,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.MIXER) .itemInput(input) - .itemInput(RagiumContents.Misc.SOAP_INGOT) + .itemInput(RagiumItems.SOAP_INGOT) .fluidInput(Fluids.WATER) .itemOutput(output) .offerTo(exporter, output, "_breaching") @@ -712,7 +714,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTMachineRecipeJsonBuilder .create(RagiumMachineKeys.CHEMICAL_REACTOR) .itemInput(input) - .fluidInput(RagiumContents.Fluids.CHLORINE) + .fluidInput(RagiumFluids.CHLORINE) .itemOutput(output) .offerTo(exporter, output, "_breaching") } @@ -775,7 +777,7 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co .create(RagiumMachineKeys.SAW_MILL) .itemInput(log) .itemOutput(plank, 6) - .itemOutput(RagiumContents.Foods.PULP) + .itemOutput(RagiumItems.PULP) .offerTo(exporter, plank) } @@ -784,13 +786,13 @@ class RagiumMachineRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun mobExtractor(exporter: RecipeExporter) { registerMobDrop(exporter, Items.ARMADILLO_SCUTE, EntityType.ARMADILLO) registerMobDrop(exporter, Items.HONEYCOMB, EntityType.BEE) - // registerMobDrop(exporter, RagiumContents.Fluids.SULFURIC_ACID, EntityType.BLAZE) - // registerMobDrop(exporter, RagiumContents.Fluids.NITRIC_ACID, EntityType.BREEZE) + // registerMobDrop(exporter, RagiumFluids.SULFURIC_ACID, EntityType.BLAZE) + // registerMobDrop(exporter, RagiumFluids.NITRIC_ACID, EntityType.BREEZE) registerMobDrop(exporter, Items.EGG, EntityType.CHICKEN) - // registerMobDrop(exporter, RagiumContents.Fluids.MILK, EntityType.COW) + // registerMobDrop(exporter, RagiumFluids.MILK, EntityType.COW) registerMobDrop(exporter, Items.GLOW_INK_SAC, EntityType.GLOW_SQUID) registerMobDrop(exporter, Items.IRON_NUGGET, EntityType.IRON_GOLEM) - // registerMobDrop(exporter, RagiumContents.Fluids.MILK, EntityType.MOOSHROOM) // TODO + // registerMobDrop(exporter, RagiumFluids.MILK, EntityType.MOOSHROOM) // TODO registerMobDrop(exporter, Items.WHITE_WOOL, EntityType.SHEEP) registerMobDrop(exporter, Items.SNOWBALL, EntityType.SNOW_GOLEM) registerMobDrop(exporter, Items.INK_SAC, EntityType.SQUID) diff --git a/src/main/kotlin/hiiragi283/ragium/data/RagiumMaterialRecipeProvider.kt b/src/main/kotlin/hiiragi283/ragium/data/RagiumMaterialRecipeProvider.kt index be9105f95..fbe13ff2d 100644 --- a/src/main/kotlin/hiiragi283/ragium/data/RagiumMaterialRecipeProvider.kt +++ b/src/main/kotlin/hiiragi283/ragium/data/RagiumMaterialRecipeProvider.kt @@ -5,7 +5,7 @@ import hiiragi283.ragium.api.data.recipe.HTCookingRecipeJsonBuilder import hiiragi283.ragium.api.data.recipe.HTMachineRecipeJsonBuilder import hiiragi283.ragium.api.data.recipe.HTShapedRecipeJsonBuilder import hiiragi283.ragium.api.data.recipe.HTShapelessRecipeJsonBuilder -import hiiragi283.ragium.api.tags.HTTagPrefixes +import hiiragi283.ragium.api.material.HTTagPrefixes import hiiragi283.ragium.common.init.RagiumMachineKeys import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider diff --git a/src/main/kotlin/hiiragi283/ragium/data/RagiumTagProviders.kt b/src/main/kotlin/hiiragi283/ragium/data/RagiumTagProviders.kt index e571b4f23..3ed1fab84 100644 --- a/src/main/kotlin/hiiragi283/ragium/data/RagiumTagProviders.kt +++ b/src/main/kotlin/hiiragi283/ragium/data/RagiumTagProviders.kt @@ -4,10 +4,12 @@ import com.google.common.collect.HashMultimap import com.google.common.collect.Multimap import hiiragi283.ragium.api.content.HTContent import hiiragi283.ragium.api.content.RagiumMaterials +import hiiragi283.ragium.api.material.HTTagPrefix import hiiragi283.ragium.api.tags.* import hiiragi283.ragium.common.RagiumContents import hiiragi283.ragium.common.init.RagiumBlocks import hiiragi283.ragium.common.init.RagiumEnchantments +import hiiragi283.ragium.common.init.RagiumFluids import hiiragi283.ragium.common.item.HTCrafterHammerItem import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput @@ -110,16 +112,16 @@ object RagiumTagProviders { getOrCreateTagBuilder(tagKey).add(fluid) } - fun add(tagKey: TagKey, fluid: RagiumContents.Fluids) { + fun add(tagKey: TagKey, fluid: RagiumFluids) { add(tagKey, fluid.value) } - add(RagiumFluidTags.FUEL, RagiumContents.Fluids.BIO_FUEL) - add(RagiumFluidTags.FUEL, RagiumContents.Fluids.FUEL) - add(RagiumFluidTags.FUEL, RagiumContents.Fluids.AROMATIC_COMPOUNDS) + add(RagiumFluidTags.FUEL, RagiumFluids.BIO_FUEL) + add(RagiumFluidTags.FUEL, RagiumFluids.FUEL) + add(RagiumFluidTags.FUEL, RagiumFluids.AROMATIC_COMPOUNDS) - add(RagiumFluidTags.ORGANIC_OILS, RagiumContents.Fluids.TALLOW) - add(RagiumFluidTags.ORGANIC_OILS, RagiumContents.Fluids.SEED_OIL) + add(RagiumFluidTags.ORGANIC_OILS, RagiumFluids.TALLOW) + add(RagiumFluidTags.ORGANIC_OILS, RagiumFluids.SEED_OIL) } } @@ -155,8 +157,6 @@ object RagiumTagProviders { addAll(RagiumContents.Armors.entries) addAll(RagiumContents.Tools.entries) - - addAll(RagiumContents.Foods.entries) }.forEach { content: HTContent -> if (content is HTContent.Material<*>) { add(content.prefixedTagKey, content) diff --git a/src/main/kotlin/hiiragi283/ragium/data/RagiumVanillaRecipeProvider.kt b/src/main/kotlin/hiiragi283/ragium/data/RagiumVanillaRecipeProvider.kt index 595b07c24..63004d2cc 100644 --- a/src/main/kotlin/hiiragi283/ragium/data/RagiumVanillaRecipeProvider.kt +++ b/src/main/kotlin/hiiragi283/ragium/data/RagiumVanillaRecipeProvider.kt @@ -11,9 +11,7 @@ import hiiragi283.ragium.api.machine.block.HTMachineBlock import hiiragi283.ragium.api.recipe.HTSmithingModuleRecipe import hiiragi283.ragium.api.tags.RagiumItemTags import hiiragi283.ragium.common.RagiumContents -import hiiragi283.ragium.common.init.RagiumBlocks -import hiiragi283.ragium.common.init.RagiumComponentTypes -import hiiragi283.ragium.common.init.RagiumMachineKeys +import hiiragi283.ragium.common.init.* import hiiragi283.ragium.common.item.HTBackpackItem import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider @@ -156,7 +154,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun craftingTools(exporter: RecipeExporter) { HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.FORGE_HAMMER) + .create(RagiumItems.FORGE_HAMMER) .patterns( " AA", "BBA", @@ -167,7 +165,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter) HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.CRAFTER_HAMMER) + .create(RagiumItems.CRAFTER_HAMMER) .patterns( " AA", "BBA", @@ -236,7 +234,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co // backpack HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.BACKPACK) + .create(RagiumItems.BACKPACK) .patterns( " A ", "ABA", @@ -252,9 +250,9 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun dyeBackpack(exporter: RecipeExporter, color: DyeColor) { HTShapelessRecipeJsonBuilder .create(HTBackpackItem.createStack(color)) - .input(RagiumContents.Misc.BACKPACK) + .input(RagiumItems.BACKPACK) .input(createTagKey("dyes/${color.asString()}")) - .unlockedBy(RagiumContents.Misc.BACKPACK) + .unlockedBy(RagiumItems.BACKPACK) .offerPrefix(exporter, "dyed_${color.asString()}_") } @@ -263,7 +261,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co // Crafting - Foods // private fun fluidIngredient(fluid: Fluid): Ingredient = DefaultCustomIngredients.components( - Ingredient.ofItems(RagiumContents.Misc.FILLED_FLUID_CUBE), + Ingredient.ofItems(RagiumItems.FILLED_FLUID_CUBE), ) { builder: ComponentChanges.Builder -> builder.add(RagiumComponentTypes.FLUID, fluid) } @@ -275,32 +273,32 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co "ABA", "CDC", "EEE", - ).input('A', fluidIngredient(RagiumContents.Fluids.MILK.value)) + ).input('A', fluidIngredient(RagiumFluids.MILK.value)) .input('B', Items.SWEET_BERRIES) - .input('C', RagiumContents.Foods.CHOCOLATE) + .input('C', RagiumItems.CHOCOLATE) .input('D', Items.EGG) .input('E', RagiumBlocks.SPONGE_CAKE) .unlockedBy(RagiumBlocks.SPONGE_CAKE) .offerTo(exporter) HTShapelessRecipeJsonBuilder - .create(RagiumContents.Foods.CHOCOLATE_BREAD) + .create(RagiumItems.CHOCOLATE_BREAD) .input(Items.BREAD) - .input(fluidIngredient(RagiumContents.Fluids.CHOCOLATE.value)) + .input(fluidIngredient(RagiumFluids.CHOCOLATE.value)) .unlockedBy(Items.BREAD) .offerTo(exporter) HTShapelessRecipeJsonBuilder - .create(RagiumContents.Foods.CHOCOLATE_APPLE) + .create(RagiumItems.CHOCOLATE_APPLE) .input(Items.APPLE) - .input(fluidIngredient(RagiumContents.Fluids.CHOCOLATE.value)) + .input(fluidIngredient(RagiumFluids.CHOCOLATE.value)) .unlockedBy(Items.APPLE) .offerTo(exporter) /*HTShapelessRecipeJsonBuilder - .create(RagiumContents.Foods.CANDY_APPLE) + .create(RagiumItems) .input(Items.APPLE) - .input(fluidIngredient(RagiumContents.Fluids.STARCH_SYRUP.value)) + .input(fluidIngredient(RagiumFluids.STARCH_SYRUP.value)) .input(ConventionalItemTags.WOODEN_RODS) .unlockedBy(Items.APPLE) .offerTo(exporter)*/ @@ -310,7 +308,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun craftingIngredients(exporter: RecipeExporter) { HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.RAGI_ALLOY_COMPOUND) + .create(RagiumItems.RAGI_ALLOY_COMPOUND) .group("ragi_alloy_compound") .patterns( "AAA", @@ -322,7 +320,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter) HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.RAGI_ALLOY_COMPOUND) + .create(RagiumItems.RAGI_ALLOY_COMPOUND) .group("ragi_alloy_compound") .patterns( " A ", @@ -334,7 +332,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerSuffix(exporter, "_1") HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.SOLAR_PANEL) + .create(RagiumItems.SOLAR_PANEL) .patterns( "AAA", "BBB", @@ -346,7 +344,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter) HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.HEART_OF_THE_NETHER) + .create(RagiumItems.HEART_OF_THE_NETHER) .patterns( "ABA", "BCB", @@ -367,7 +365,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter) HTShapelessRecipeJsonBuilder - .create(RagiumContents.Misc.TRADER_CATALOG) + .create(RagiumItems.TRADER_CATALOG) .input(Items.BOOK) .input(ConventionalItemTags.EMERALD_GEMS) .input(ConventionalItemTags.CHESTS) @@ -401,7 +399,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co .offerTo(exporter) HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.PROCESSOR_SOCKET) + .create(RagiumItems.PROCESSOR_SOCKET) .patterns( "ABA", "BCB", @@ -422,28 +420,28 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co HTShapelessRecipeJsonBuilder .create(RagiumAPI.getInstance().createFilledCube(Fluids.WATER)) - .input(RagiumContents.Misc.EMPTY_FLUID_CUBE) + .input(RagiumItems.EMPTY_FLUID_CUBE) .input(Items.WATER_BUCKET) .unlockedBy(Items.WATER_BUCKET) .offerTo(exporter, RagiumAPI.id("water_cube")) HTShapelessRecipeJsonBuilder .create(RagiumAPI.getInstance().createFilledCube(Fluids.LAVA)) - .input(RagiumContents.Misc.EMPTY_FLUID_CUBE) + .input(RagiumItems.EMPTY_FLUID_CUBE) .input(Items.LAVA_BUCKET) .unlockedBy(Items.LAVA_BUCKET) .offerTo(exporter, RagiumAPI.id("lava_cube")) HTShapelessRecipeJsonBuilder - .create(RagiumAPI.getInstance().createFilledCube(RagiumContents.Fluids.MILK.value)) - .input(RagiumContents.Misc.EMPTY_FLUID_CUBE) + .create(RagiumAPI.getInstance().createFilledCube(RagiumFluids.MILK.value)) + .input(RagiumItems.EMPTY_FLUID_CUBE) .input(Items.MILK_BUCKET) .unlockedBy(Items.MILK_BUCKET) .offerTo(exporter, RagiumAPI.id("milk_cube")) HTShapelessRecipeJsonBuilder - .create(RagiumAPI.getInstance().createFilledCube(RagiumContents.Fluids.HONEY.value)) - .input(RagiumContents.Misc.EMPTY_FLUID_CUBE) + .create(RagiumAPI.getInstance().createFilledCube(RagiumFluids.HONEY.value)) + .input(RagiumItems.EMPTY_FLUID_CUBE) .input(Items.HONEY_BOTTLE) .input(Items.HONEY_BOTTLE) .input(Items.HONEY_BOTTLE) @@ -459,7 +457,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co suffix: String? = null, ) { HTShapedRecipeJsonBuilder - .create(RagiumContents.Misc.EMPTY_FLUID_CUBE, count) + .create(RagiumItems.EMPTY_FLUID_CUBE, count) .patterns( " A ", "A A", @@ -503,7 +501,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co " B ", "AAA", ).input('A', input) - .input('B', RagiumContents.Misc.FORGE_HAMMER) + .input('B', RagiumItems.FORGE_HAMMER) .unlockedBy(ItemTags.PLANKS) .offerTo(exporter) } @@ -606,12 +604,12 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co createGenerator( exporter, RagiumMachineKeys.COMBUSTION_GENERATOR, - RagiumContents.Misc.ENGINE, + RagiumItems.ENGINE, ) createGenerator( exporter, RagiumMachineKeys.SOLAR_PANEL, - RagiumContents.Misc.SOLAR_PANEL, + RagiumItems.SOLAR_PANEL, ) createGenerator( exporter, @@ -629,16 +627,21 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co RagiumMachineKeys.ASSEMBLER, HTMachineTier::getCircuit, ) + createProcessor( + exporter, + RagiumMachineKeys.BLAST_FURNACE, + Items.BLAST_FURNACE, + ) createProcessor( exporter, RagiumMachineKeys.CHEMICAL_REACTOR, Items.GLASS, ) - /*createMachine( + createProcessor( exporter, - RagiumMachineKeys.COMPRESSOR, - Items.PISTON, - )*/ + RagiumMachineKeys.DISTILLATION_TOWER, + RagiumItems.EMPTY_FLUID_CUBE, + ) createProcessor( exporter, RagiumMachineKeys.ELECTROLYZER, @@ -658,7 +661,7 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co exporter, RagiumMachineKeys.METAL_FORMER, RagiumBlocks.MANUAL_FORGE, - RagiumContents.Misc.FORGE_HAMMER, + RagiumItems.FORGE_HAMMER, ) createProcessor( exporter, @@ -667,20 +670,20 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co ) createProcessor( exporter, - RagiumMachineKeys.ROCK_GENERATOR, - Items.LAVA_BUCKET, - Items.WATER_BUCKET, - ) - - createProcessor( - exporter, - RagiumMachineKeys.BLAST_FURNACE, - Items.BLAST_FURNACE, + RagiumMachineKeys.MULTI_SMELTER, + { + when (it) { + HTMachineTier.PRIMITIVE -> Items.BLAZE_POWDER + HTMachineTier.BASIC -> Items.GHAST_TEAR + HTMachineTier.ADVANCED -> RagiumItems.HEART_OF_THE_NETHER + } + }, ) createProcessor( exporter, - RagiumMachineKeys.DISTILLATION_TOWER, - RagiumContents.Misc.EMPTY_FLUID_CUBE, + RagiumMachineKeys.ROCK_GENERATOR, + Items.LAVA_BUCKET, + Items.WATER_BUCKET, ) createProcessor( exporter, @@ -829,8 +832,8 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co "A", "B", ).input('A', ConventionalItemTags.STRINGS) - .input('B', RagiumContents.Foods.BEE_WAX) - .unlockedBy(RagiumContents.Foods.BEE_WAX) + .input('B', RagiumItems.BEE_WAX) + .unlockedBy(RagiumItems.BEE_WAX) .offerTo(exporter) } @@ -839,15 +842,15 @@ class RagiumVanillaRecipeProvider(output: FabricDataOutput, registriesFuture: Co private fun cookingRecipes(exporter: RecipeExporter) { HTCookingRecipeJsonBuilder.smeltAndBlast( exporter, - RagiumContents.Misc.RAGI_ALLOY_COMPOUND, + RagiumItems.RAGI_ALLOY_COMPOUND, RagiumContents.Ingots.RAGI_ALLOY, ) HTCookingRecipeJsonBuilder.smeltAndSmoke( exporter, - Ingredient.ofItems(RagiumContents.Foods.DOUGH), + Ingredient.ofItems(RagiumItems.DOUGH), Items.BREAD, - RecipeProvider.conditionsFromItem(RagiumContents.Foods.DOUGH), + RecipeProvider.conditionsFromItem(RagiumItems.DOUGH), ) }