diff --git a/build.gradle b/build.gradle index b0eb1eaf..04cbd76a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,9 +8,6 @@ buildscript { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true } } -plugins { - id "com.wynprice.cursemaven" version "1.1.0" -} apply plugin: 'net.minecraftforge.gradle' apply plugin: 'maven' apply plugin: 'maven-publish' @@ -119,12 +116,8 @@ repositories { name 'tterrag maven' url "https://maven.tterrag.com/" } - maven { // WAILA - name "Tehnut Maven FS" - url "https://tehnut.info/maven" - } - maven { // LLibrary - url = "http://maven.mcmoddev.com" + maven { + url = "https://www.cursemaven.com" } } @@ -137,10 +130,10 @@ dependencies { runtimeOnly fg.deobf("mezz.jei:jei-${config.minecraft_version}:${config.jei_version}") compile fg.deobf("slimeknights.mantle:Mantle:${config.minecraft_version}-${config.mantle_version}") - //deobfCompile curse.resolve("leather-works", "2695934") - //deobfCompile "net.ilexiconn:llibrary:1.7.9-1.12.2" - //deobfCompile curse.resolve("rats", "2732516") - //deobfCompile curse.resolve("the-twilight-forest", "2618264") + + // rats plugin + //runtimeOnly fg.deobf("curse.maven:citadel:2992577") + //runtimeOnly fg.deobf("curse.maven:rats:3041056") } jar { diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 18db9007..dca06fb4 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -1,3 +1,4 @@ +96d82b64ee7eab137ac6fe4bcff983e161c60d83 data/forge/tags/fluids/milk.json eaf9ea781f5220889d762b91e1267309994f1634 data/forge/tags/items/bookshelves.json 310fd9b17f2286a204c0552bd9b8c1c5769c5a70 data/forge/tags/items/dyes/black.json d62d9549d00dfb79731abd7d3622a4a8efbac828 data/forge/tags/items/dyes/blue.json @@ -160,7 +161,9 @@ ba0aa41e87eba45f5afaae186d55b2db0f4b7d43 data/inspirations/advancements/recipes/ 08202e9d5ddc5d565afaf2427c68270499e4b37a data/inspirations/advancements/recipes/cauldron/cauldron/concrete/white.json c8697f7a4163fb4d846b66591b15d8bc3ee2b065 data/inspirations/advancements/recipes/cauldron/cauldron/concrete/yellow.json 0558ed0c0b9ea4e1a357b75a2971dd2736c738fc data/inspirations/advancements/recipes/cauldron/cauldron/dry_cauldron.json +e9f31fb49c73102e74292985465de68a333f7e1d data/inspirations/advancements/recipes/cauldron/cauldron/empty_milk_bucket.json dc6a35dd2aebbc66a2b9e2d61ac57f5f6cdd287c data/inspirations/advancements/recipes/cauldron/cauldron/empty_water_bottle.json +7f4314c8c0d8fdd8b39af92aafe3d86250c920b2 data/inspirations/advancements/recipes/cauldron/cauldron/fill_milk_bucket.json 566e670a21516e6910f70aa437a730b903a69466 data/inspirations/advancements/recipes/cauldron/cauldron/fill_water_bottle.json edaa5180d5a0bf0b1efe0c51b6c61b1f7ce61cfc data/inspirations/advancements/recipes/cauldron/cauldron/ice/ice_from_packed_ice.json e1258d061b8f7e0ffe748b3b840b7bec2b01a0f7 data/inspirations/advancements/recipes/cauldron/cauldron/ice/ice_from_water.json @@ -746,8 +749,10 @@ dfaacb0b691fc574aa0ae30a3f21aeb992ab6c3d data/inspirations/recipes/cauldron/dyea 9ae36578e5b35e7c5d62206e70701b448abdadd1 data/inspirations/recipes/cauldron/dyeable/dye_leather_horse_armor.json e535dc27fcec8fe03c36a71a0061ffeac2da95f9 data/inspirations/recipes/cauldron/dyeable/dye_leather_leggings.json 76b1e9beb5a6facb9f15e8371481bbe30e683171 data/inspirations/recipes/cauldron/empty_bucket.json +3c88ffc4ee7893b5df93277a39c9a42bf7989591 data/inspirations/recipes/cauldron/empty_milk_bucket.json 079f53c94ad3f821efb34fbe3c92cfab01d46c15 data/inspirations/recipes/cauldron/empty_water_bottle.json 2b54da72e999ac88c3a26fdf0704bd06ce80dc90 data/inspirations/recipes/cauldron/fill_bucket.json +be79706db05479b1212c6e1b4897394c7f956224 data/inspirations/recipes/cauldron/fill_milk_bucket.json 4d16f0fbec7fda0992e4b3ec3a4d08e31e42e1a1 data/inspirations/recipes/cauldron/fill_water_bottle.json 4e93ea4ea10138d982bc94e1ca9005d9a2567171 data/inspirations/recipes/cauldron/ice/ice_from_packed_ice.json 21a777c55086f0e810260c73e2a4063559ae4bbb data/inspirations/recipes/cauldron/ice/ice_from_water.json diff --git a/src/generated/resources/data/forge/tags/fluids/milk.json b/src/generated/resources/data/forge/tags/fluids/milk.json new file mode 100644 index 00000000..3a9842a4 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/milk.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "inspirations:milk", + "inspirations:flowing_milk" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/empty_milk_bucket.json b/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/empty_milk_bucket.json new file mode 100644 index 00000000..b6ba3d52 --- /dev/null +++ b/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/empty_milk_bucket.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "inspirations:cauldron/empty_milk_bucket" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "minecraft:milk_bucket" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "inspirations:cauldron/empty_milk_bucket" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/fill_milk_bucket.json b/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/fill_milk_bucket.json new file mode 100644 index 00000000..dc46f847 --- /dev/null +++ b/src/generated/resources/data/inspirations/advancements/recipes/cauldron/cauldron/fill_milk_bucket.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "inspirations:cauldron/fill_milk_bucket" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "minecraft:milk_bucket" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "inspirations:cauldron/fill_milk_bucket" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/inspirations/recipes/cauldron/empty_milk_bucket.json b/src/generated/resources/data/inspirations/recipes/cauldron/empty_milk_bucket.json new file mode 100644 index 00000000..e5a020e7 --- /dev/null +++ b/src/generated/resources/data/inspirations/recipes/cauldron/empty_milk_bucket.json @@ -0,0 +1,41 @@ +{ + "type": "inspirations:cauldron", + "conditions": [ + { + "prop": "recipes_module", + "type": "inspirations:config" + }, + { + "prop": "cauldron_recipes", + "type": "inspirations:config" + } + ], + "input": { + "item": { + "item": "minecraft:milk_bucket" + }, + "contents": { + "type": "inspirations:fluid", + "tag": "forge:milk" + }, + "level": { + "max": 2 + } + }, + "output": { + "item": { + "item": "minecraft:bucket" + }, + "container": { + "empty": true + }, + "contents": { + "type": "inspirations:fluid", + "name": "inspirations:milk" + }, + "level": { + "set": 3 + } + }, + "sound": "minecraft:item.bucket.empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/inspirations/recipes/cauldron/fill_milk_bucket.json b/src/generated/resources/data/inspirations/recipes/cauldron/fill_milk_bucket.json new file mode 100644 index 00000000..3a6b9202 --- /dev/null +++ b/src/generated/resources/data/inspirations/recipes/cauldron/fill_milk_bucket.json @@ -0,0 +1,34 @@ +{ + "type": "inspirations:cauldron", + "conditions": [ + { + "prop": "recipes_module", + "type": "inspirations:config" + }, + { + "prop": "cauldron_recipes", + "type": "inspirations:config" + } + ], + "input": { + "item": { + "item": "minecraft:milk_bucket" + }, + "contents": { + "type": "inspirations:fluid", + "tag": "forge:milk" + }, + "level": { + "min": 3 + } + }, + "output": { + "item": { + "item": "minecraft:milk_bucket" + }, + "level": { + "set": 0 + } + }, + "sound": "minecraft:item.bucket.fill" +} \ No newline at end of file diff --git a/src/main/java/knightminer/inspirations/Inspirations.java b/src/main/java/knightminer/inspirations/Inspirations.java index a98b2caa..1673f1bc 100644 --- a/src/main/java/knightminer/inspirations/Inspirations.java +++ b/src/main/java/knightminer/inspirations/Inspirations.java @@ -5,6 +5,7 @@ import knightminer.inspirations.building.InspirationsBuilding; import knightminer.inspirations.common.Config; import knightminer.inspirations.common.datagen.InspirationsBlockTagsProvider; +import knightminer.inspirations.common.datagen.InspirationsFluidTagsProvider; import knightminer.inspirations.common.datagen.InspirationsItemTagsProvider; import knightminer.inspirations.common.datagen.InspirationsLootTableProvider; import knightminer.inspirations.common.network.InspirationsNetwork; @@ -98,6 +99,7 @@ void gatherData(GatherDataEvent event) { BlockTagsProvider blockTags = new InspirationsBlockTagsProvider(gen); gen.addProvider(blockTags); gen.addProvider(new InspirationsItemTagsProvider(gen, blockTags)); + gen.addProvider(new InspirationsFluidTagsProvider(gen)); gen.addProvider(new InspirationsLootTableProvider(gen)); } } diff --git a/src/main/java/knightminer/inspirations/common/datagen/InspirationsFluidTagsProvider.java b/src/main/java/knightminer/inspirations/common/datagen/InspirationsFluidTagsProvider.java new file mode 100644 index 00000000..ac4ba5a5 --- /dev/null +++ b/src/main/java/knightminer/inspirations/common/datagen/InspirationsFluidTagsProvider.java @@ -0,0 +1,24 @@ +package knightminer.inspirations.common.datagen; + +import knightminer.inspirations.Inspirations; +import knightminer.inspirations.library.InspirationsTags; +import knightminer.inspirations.recipes.InspirationsRecipes; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.FluidTagsProvider; + +public class InspirationsFluidTagsProvider extends FluidTagsProvider { + public InspirationsFluidTagsProvider(DataGenerator gen) { + super(gen); + this.modId = Inspirations.modID; + } + + @Override + public String getName() { + return "Inspirations Fluid Tags"; + } + + @Override + protected void registerTags() { + this.getOrCreateBuilder(InspirationsTags.Fluids.MILK).add(InspirationsRecipes.milk, InspirationsRecipes.milk.getFlowingFluid()); + } +} diff --git a/src/main/java/knightminer/inspirations/library/InspirationsTags.java b/src/main/java/knightminer/inspirations/library/InspirationsTags.java index 9c810ca9..c1e80d77 100644 --- a/src/main/java/knightminer/inspirations/library/InspirationsTags.java +++ b/src/main/java/knightminer/inspirations/library/InspirationsTags.java @@ -2,8 +2,10 @@ import knightminer.inspirations.Inspirations; import net.minecraft.block.Block; +import net.minecraft.fluid.Fluid; import net.minecraft.item.Item; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.FluidTags; import net.minecraft.tags.ITag.INamedTag; import net.minecraft.tags.ItemTags; @@ -79,4 +81,12 @@ private static INamedTag forgeTag(String name) { return ItemTags.makeWrapperTag("forge:" + name); } } + + public static class Fluids { + public static final INamedTag MILK = forgeTag("milk"); + + private static INamedTag forgeTag(String name) { + return FluidTags.makeWrapperTag("forge:" + name); + } + } } diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ingredient/FluidCauldronIngredient.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/ingredient/FluidCauldronIngredient.java index 9ab9f910..dd2b4271 100644 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ingredient/FluidCauldronIngredient.java +++ b/src/main/java/knightminer/inspirations/library/recipe/cauldron/ingredient/FluidCauldronIngredient.java @@ -6,7 +6,6 @@ import knightminer.inspirations.library.recipe.cauldron.CauldronIngredients; import net.minecraft.fluid.Fluid; import net.minecraft.network.PacketBuffer; -import net.minecraft.tags.FluidTags; import net.minecraft.tags.ITag; import net.minecraft.tags.TagCollectionManager; import net.minecraft.util.JSONUtils; @@ -72,7 +71,7 @@ public ContentMatchIngredient read(JsonObject json) { // tag if (json.has("tag")) { ResourceLocation tagName = new ResourceLocation(JSONUtils.getString(json, "tag")); - ITag tag = FluidTags.getCollection().get(tagName); + ITag tag = TagCollectionManager.func_232928_e_().func_232926_c_().get(tagName); if (tag == null) { throw new JsonSyntaxException("Unknown fluid tag '" + tagName + "'"); } diff --git a/src/main/java/knightminer/inspirations/recipes/InspirationsRecipes.java b/src/main/java/knightminer/inspirations/recipes/InspirationsRecipes.java index 09c1d1d5..8f3eada5 100644 --- a/src/main/java/knightminer/inspirations/recipes/InspirationsRecipes.java +++ b/src/main/java/knightminer/inspirations/recipes/InspirationsRecipes.java @@ -62,6 +62,8 @@ public class InspirationsRecipes extends ModuleBase { public static final ResourceLocation STILL_FLUID = Inspirations.getResource("block/fluid/colorless"); public static final ResourceLocation FLOWING_FLUID = Inspirations.getResource("block/fluid/colorless_flow"); + public static final ResourceLocation STILL_MILK = Inspirations.getResource("block/fluid/milk"); + public static final ResourceLocation FLOWING_MILK = Inspirations.getResource("block/fluid/milk_flow"); // blocks public static Block fullAnvil; @@ -92,7 +94,7 @@ public class InspirationsRecipes extends ModuleBase { public static ForgeFlowingFluid potatoSoup; public static BucketItem potatoSoupBucket; public static FlowingFluidBlock potatoSoupBlock; - //public static Fluid milk; + public static ForgeFlowingFluid milk; // cauldron serializers public static CauldronRecipe.Serializer cauldronSerializer; @@ -127,7 +129,8 @@ void registerFluids(Register event) { potatoSoup = adapter.register(new FluidBuilder(coloredFluid().color(0xFFF2DA9F).temperature(373)) .block(() -> potatoSoupBlock) .bucket(() -> potatoSoupBucket), "potato_soup"); - //milk = adapter.register(new FluidBuilder(FluidAttributes.builder(Inspirations.getResource("block/milk"), Inspirations.getResource("block/milk_flow")).color(0xFFCD8C6F)), "milk"); + milk = adapter.register(new FluidBuilder(FluidAttributes.builder(STILL_MILK, FLOWING_MILK).density(1024).viscosity(1024)) + .bucket(Items.MILK_BUCKET.delegate), "milk"); } @SubscribeEvent diff --git a/src/main/java/knightminer/inspirations/recipes/data/RecipesRecipeProvider.java b/src/main/java/knightminer/inspirations/recipes/data/RecipesRecipeProvider.java index d2eb919c..ae90d395 100644 --- a/src/main/java/knightminer/inspirations/recipes/data/RecipesRecipeProvider.java +++ b/src/main/java/knightminer/inspirations/recipes/data/RecipesRecipeProvider.java @@ -225,6 +225,25 @@ private void addCauldronRecipes() { .build(concrete, resource(concreteFolder + color.getString())); }); + // temporary milk recipes until Forge merges one of my milk bucket fixes + ICauldronIngredient milkIngredient = CauldronIngredients.FLUID.of(InspirationsTags.Fluids.MILK); + CauldronRecipeBuilder.cauldron(SizedIngredient.fromItems(Items.MILK_BUCKET), milkIngredient) + .maxLevels(2) + .setFull() + .setOutput(Items.BUCKET) + .setOutput(CauldronContentTypes.FLUID.of(InspirationsRecipes.milk)) + .noContainer() + .addCriterion("has_item", hasItem(Items.MILK_BUCKET)) + .setSound(SoundEvents.ITEM_BUCKET_EMPTY) + .build(cauldronRecipes, resource(folder + "empty_milk_bucket")); + CauldronRecipeBuilder.cauldron(SizedIngredient.fromItems(Items.MILK_BUCKET), milkIngredient) + .matchFull() + .setEmpty() + .setOutput(Items.MILK_BUCKET) + .addCriterion("has_item", hasItem(Items.MILK_BUCKET)) + .setSound(SoundEvents.ITEM_BUCKET_FILL) + .build(cauldronRecipes, resource(folder + "fill_milk_bucket")); + // dyes // diff --git a/src/main/resources/assets/inspirations/models/cauldron_textures.json b/src/main/resources/assets/inspirations/models/cauldron_textures.json index d3c7b269..e23be869 100644 --- a/src/main/resources/assets/inspirations/models/cauldron_textures.json +++ b/src/main/resources/assets/inspirations/models/cauldron_textures.json @@ -4,5 +4,7 @@ "inspirations:color": "inspirations:block/fluid/colorless", "inspirations:dye": "inspirations:block/fluid/colorless", - "inspirations:potion": "inspirations:block/fluid/potion" + "inspirations:potion": "inspirations:block/fluid/potion", + + "rats:cheese": "rats:block/cheese" } \ No newline at end of file diff --git a/src/main/resources/data/inspirations/recipes/compat/rats/cheese_from_milk.json b/src/main/resources/data/inspirations/recipes/compat/rats/cheese_from_milk.json new file mode 100644 index 00000000..dbefebff --- /dev/null +++ b/src/main/resources/data/inspirations/recipes/compat/rats/cheese_from_milk.json @@ -0,0 +1,26 @@ +{ + "type": "inspirations:cauldron_transform", + "conditions": [ + { + "prop": "extended_cauldron_recipes", + "type": "inspirations:config" + }, + { + "modid": "rats", + "type": "forge:mod_loaded" + } + ], + "input": { + "type": "inspirations:fluid", + "tag": "forge:milk" + }, + "level": { + "min": 3 + }, + "output": { + "type": "inspirations:custom", + "name": "rats:cheese" + }, + "time": 150, + "sound": "minecraft:block.slime_block.place" +} \ No newline at end of file diff --git a/src/main/resources/data/inspirations/recipes/compat/rats/pickup_cheese.json b/src/main/resources/data/inspirations/recipes/compat/rats/pickup_cheese.json new file mode 100644 index 00000000..464b79cd --- /dev/null +++ b/src/main/resources/data/inspirations/recipes/compat/rats/pickup_cheese.json @@ -0,0 +1,31 @@ +{ + "type": "inspirations:cauldron", + "conditions": [ + { + "prop": "extended_cauldron_recipes", + "type": "inspirations:config" + }, + { + "modid": "rats", + "type": "forge:mod_loaded" + } + ], + "input": { + "contents": { + "type": "inspirations:custom", + "name": "rats:cheese" + }, + "level": { + "min": 3 + } + }, + "output": { + "item": { + "item": "rats:block_of_cheese" + }, + "level": { + "set": 0 + } + }, + "sound": "minecraft:block.slime_block.break" +} \ No newline at end of file