Skip to content

Commit

Permalink
feat: add recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
gloridifice committed Jun 2, 2024
1 parent 6a82b89 commit 8fc998c
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ object ModItemColorProviders {
val cupColorProvider = { stack: ItemStack, layer: Int ->
if (layer == 1) {
stack.getOrCreateFluidStorageData()?.let {
FluidRenderHandlerRegistry.INSTANCE.get(it.fluid).getFluidColor(
FluidRenderHandlerRegistry.INSTANCE?.get(it.fluid)?.getFluidColor(
MinecraftClient.getInstance().world,
BlockPos.ORIGIN,
ModFluids.PURIFIED_WATER.defaultState
Expand Down
19 changes: 19 additions & 0 deletions src/main/kotlin/xyz/koiro/watersource/api/RecipeProvideUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package xyz.koiro.watersource.api

import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider
import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder
import net.minecraft.item.Item
import net.minecraft.item.ItemConvertible
import net.minecraft.registry.tag.ItemTags
import net.minecraft.registry.tag.TagKey

fun ShapedRecipeJsonBuilder.inputWithCriterion(char: Char, tag: TagKey<Item>): ShapedRecipeJsonBuilder{
this.input(char, tag)
this.criterion("has_tag_${tag}", FabricRecipeProvider.conditionsFromTag(tag))
return this
}
fun ShapedRecipeJsonBuilder.inputWithCriterion(char: Char, item: ItemConvertible): ShapedRecipeJsonBuilder{
this.input(char, item)
this.criterion(FabricRecipeProvider.hasItem(item), FabricRecipeProvider.conditionsFromItem(item))
return this
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package xyz.koiro.watersource.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider.ItemTagProvider
import net.minecraft.item.Item
import net.minecraft.item.Items
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.TagKey
Expand All @@ -26,5 +27,9 @@ class ModItemTagGenerator(
getOrCreateTagBuilder(ModTags.Item.PURIFICATION_STRAINER)
.add(ModItems.PAPER_STRAINER)
.add(ModItems.NATURAL_STRAINER)

getOrCreateTagBuilder(ModTags.Item.BASICS_INGOT)
.add(Items.IRON_INGOT)
.add(Items.COPPER_INGOT)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,22 @@ package xyz.koiro.watersource.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider
import net.minecraft.data.server.recipe.RecipeJsonProvider
import net.minecraft.data.server.recipe.RecipeProvider
import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder
import net.minecraft.fluid.Fluid
import net.minecraft.fluid.Fluids
import net.minecraft.item.Item
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.recipe.Ingredient
import net.minecraft.recipe.book.RecipeCategory
import net.minecraft.registry.tag.ItemTags
import net.minecraft.util.Identifier
import xyz.koiro.watersource.WaterSource
import xyz.koiro.watersource.api.inputWithCriterion
import xyz.koiro.watersource.datagen.recipe.StrainerFilteringFluidRecipeJsonBuilder
import xyz.koiro.watersource.world.fluid.ModFluids
import xyz.koiro.watersource.world.item.ModItems
import xyz.koiro.watersource.world.tag.ModTags
import java.util.function.Consumer

Expand All @@ -22,6 +31,70 @@ class ModRecipeGenerator(output: FabricDataOutput?) : FabricRecipeProvider(outpu
ModFluids.PURIFIED_WATER,
Ingredient.fromTag(ModTags.Item.PURIFICATION_STRAINER)
)
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.WOODEN_CUP_EMPTY, 2)
.inputWithCriterion('w', ItemTags.PLANKS)
.pattern("w w")
.pattern("w w")
.pattern(" w ")
.offerTo(exporter)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RAW_POTTERY_CUP)
.inputWithCriterion('w', Items.CLAY_BALL)
.pattern("w w")
.pattern("w w")
.pattern(" w ")
.offerTo(exporter)
RecipeProvider.offerSmelting(
exporter,
listOf(ModItems.RAW_POTTERY_CUP), RecipeCategory.MISC,
ModItems.POTTERY_CUP_EMPTY, 0.5f, 200, "pottery"
)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PAPER_STRAINER)
.inputWithCriterion('p', Items.PAPER)
.inputWithCriterion('c', Items.CHARCOAL)
.pattern("ppp")
.pattern("ccc")
.pattern("ppp")
.offerTo(exporter)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.NATURAL_STRAINER)
.inputWithCriterion('s', ItemTags.SAND)
.inputWithCriterion('c', Items.CHARCOAL)
.inputWithCriterion('r', Items.CLAY_BALL)
.pattern("ccc")
.pattern("sss")
.pattern("rrr")
.offerTo(exporter)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.LEATHER_WATER_BAG_SMALL)
.inputWithCriterion('l', Items.LEATHER)
.inputWithCriterion('s', Items.STRING)
.inputWithCriterion('i', ModTags.Item.BASICS_INGOT)
.pattern("sis")
.pattern("l l")
.pattern("lll")
.offerTo(exporter)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.LEATHER_WATER_BAG_MEDIUM)
.inputWithCriterion('b', ModItems.LEATHER_WATER_BAG_SMALL)
.inputWithCriterion('l', Items.LEATHER)
.inputWithCriterion('s', Items.STRING)
.inputWithCriterion('i', Items.IRON_INGOT)
.pattern("sis")
.pattern("ibi")
.pattern("lll")
.offerTo(exporter)

ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.LEATHER_WATER_BAG_LARGE)
.inputWithCriterion('b', ModItems.LEATHER_WATER_BAG_MEDIUM)
.inputWithCriterion('l', Items.LEATHER)
.inputWithCriterion('d', Items.DIAMOND)
.inputWithCriterion('h', Items.HEART_OF_THE_SEA)
.pattern("dhd")
.pattern("lbl")
.pattern("lll")
.offerTo(exporter)
}

private fun genSFFRecipe(
Expand Down
6 changes: 5 additions & 1 deletion src/main/kotlin/xyz/koiro/watersource/world/tag/ModTags.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ import xyz.koiro.watersource.WaterSource

object ModTags {
object Item{
val PURIFICATION_STRAINER = TagKey.of(RegistryKeys.ITEM, WaterSource.identifier("purification_strainer"))!!;
val PURIFICATION_STRAINER = modTag("purification_strainer")
val BASICS_INGOT = modTag("basics_ingot")

private fun modTag(id: String) =
TagKey.of(RegistryKeys.ITEM, WaterSource.identifier(id))!!
}

object Block{
Expand Down

0 comments on commit 8fc998c

Please sign in to comment.