From 12e0daed944de7cd84faab657bc981568c243c7a Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 12 Jul 2018 16:14:26 +0200 Subject: [PATCH] Fixed fortune 1, 2, 3 and silk touch upgrades giving the wrong item. Fixes #1866 --- .../refinedstorage/proxy/ProxyCommon.java | 6 +++ .../IngredientFactoryEnchantedBook.java | 30 ------------- .../RecipeUpgradeWithEnchantedBook.java | 42 +++++++++++++++++++ .../refinedstorage/recipes/_factories.json | 5 --- .../recipes/fortune_1_upgrade.json | 29 ------------- .../recipes/fortune_2_upgrade.json | 29 ------------- .../recipes/fortune_3_upgrade.json | 29 ------------- .../recipes/silk_touch_upgrade.json | 28 ------------- 8 files changed, 48 insertions(+), 150 deletions(-) delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/recipe/IngredientFactoryEnchantedBook.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/recipe/RecipeUpgradeWithEnchantedBook.java delete mode 100644 src/main/resources/assets/refinedstorage/recipes/_factories.json delete mode 100644 src/main/resources/assets/refinedstorage/recipes/fortune_1_upgrade.json delete mode 100644 src/main/resources/assets/refinedstorage/recipes/fortune_2_upgrade.json delete mode 100644 src/main/resources/assets/refinedstorage/recipes/fortune_3_upgrade.json delete mode 100644 src/main/resources/assets/refinedstorage/recipes/silk_touch_upgrade.json diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 6adb23ab5..24927ba23 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -42,9 +42,11 @@ import com.raoulvdberge.refinedstorage.integration.inventorysorter.IntegrationIn import com.raoulvdberge.refinedstorage.integration.oc.DriverNetwork; import com.raoulvdberge.refinedstorage.integration.oc.IntegrationOC; import com.raoulvdberge.refinedstorage.item.ItemProcessor; +import com.raoulvdberge.refinedstorage.item.ItemUpgrade; import com.raoulvdberge.refinedstorage.network.*; import com.raoulvdberge.refinedstorage.recipe.RecipeCover; import com.raoulvdberge.refinedstorage.recipe.RecipeHollowCover; +import com.raoulvdberge.refinedstorage.recipe.RecipeUpgradeWithEnchantedBook; import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; @@ -284,6 +286,10 @@ public class ProxyCommon { public void registerRecipes(RegistryEvent.Register e) { e.getRegistry().register(new RecipeCover().setRegistryName(new ResourceLocation(RS.ID, "cover"))); e.getRegistry().register(new RecipeHollowCover().setRegistryName(new ResourceLocation(RS.ID, "hollow_cover"))); + e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 1, ItemUpgrade.TYPE_FORTUNE_1).setRegistryName(new ResourceLocation(RS.ID, "fortune_1_upgrade"))); + e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 2, ItemUpgrade.TYPE_FORTUNE_2).setRegistryName(new ResourceLocation(RS.ID, "fortune_2_upgrade"))); + e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 3, ItemUpgrade.TYPE_FORTUNE_3).setRegistryName(new ResourceLocation(RS.ID, "fortune_3_upgrade"))); + e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("silk_touch", 1, ItemUpgrade.TYPE_SILK_TOUCH).setRegistryName(new ResourceLocation(RS.ID, "silk_touch_upgrade"))); } @SubscribeEvent diff --git a/src/main/java/com/raoulvdberge/refinedstorage/recipe/IngredientFactoryEnchantedBook.java b/src/main/java/com/raoulvdberge/refinedstorage/recipe/IngredientFactoryEnchantedBook.java deleted file mode 100644 index 843f00366..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/recipe/IngredientFactoryEnchantedBook.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.raoulvdberge.refinedstorage.recipe; - -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentData; -import net.minecraft.item.ItemEnchantedBook; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.JsonUtils; -import net.minecraftforge.common.crafting.IIngredientFactory; -import net.minecraftforge.common.crafting.JsonContext; - -import javax.annotation.Nonnull; - -public class IngredientFactoryEnchantedBook implements IIngredientFactory { - @Nonnull - @Override - public Ingredient parse(JsonContext context, JsonObject json) { - String id = JsonUtils.getString(json, "id"); - int level = JsonUtils.getInt(json, "level", 1); - - Enchantment enchantment = Enchantment.getEnchantmentByLocation(id); - - if (enchantment == null) { - throw new JsonSyntaxException("Couldn't find enchantment with id '" + id + "'"); - } - - return Ingredient.fromStacks(ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(enchantment, level))); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/recipe/RecipeUpgradeWithEnchantedBook.java b/src/main/java/com/raoulvdberge/refinedstorage/recipe/RecipeUpgradeWithEnchantedBook.java new file mode 100644 index 000000000..35931c200 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/recipe/RecipeUpgradeWithEnchantedBook.java @@ -0,0 +1,42 @@ +package com.raoulvdberge.refinedstorage.recipe; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSItems; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentData; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemEnchantedBook; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.item.crafting.ShapedRecipes; +import net.minecraft.util.NonNullList; +import net.minecraft.world.World; + +// MC JSON recipes don't like comparing to NBT, that's why we need a custom recipe class. +// We need to compare to NBT for the enchanted book. +public class RecipeUpgradeWithEnchantedBook extends ShapedRecipes { + private ItemStack enchantedBook; + + public RecipeUpgradeWithEnchantedBook(String enchantmentId, int enchantmentLevel, int upgradeId) { + super(RS.ID, 3, 3, NonNullList.from(Ingredient.EMPTY, + Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)), + Ingredient.fromStacks(ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(Enchantment.getEnchantmentByLocation(enchantmentId), enchantmentLevel))), + Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)), + Ingredient.fromStacks(new ItemStack(Blocks.BOOKSHELF)), + Ingredient.fromStacks(new ItemStack(RSItems.UPGRADE)), + Ingredient.fromStacks(new ItemStack(Blocks.BOOKSHELF)), + Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)), + Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)), + Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)) + ), new ItemStack(RSItems.UPGRADE, 1, upgradeId)); + + this.enchantedBook = ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(Enchantment.getEnchantmentByLocation(enchantmentId), enchantmentLevel)); + } + + @Override + public boolean matches(InventoryCrafting inv, World world) { + return super.matches(inv, world) && API.instance().getComparer().isEqualNoQuantity(inv.getStackInSlot(1), enchantedBook); + } +} diff --git a/src/main/resources/assets/refinedstorage/recipes/_factories.json b/src/main/resources/assets/refinedstorage/recipes/_factories.json deleted file mode 100644 index 812736da4..000000000 --- a/src/main/resources/assets/refinedstorage/recipes/_factories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ingredients": { - "enchanted_book": "com.raoulvdberge.refinedstorage.recipe.IngredientFactoryEnchantedBook" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/fortune_1_upgrade.json b/src/main/resources/assets/refinedstorage/recipes/fortune_1_upgrade.json deleted file mode 100644 index bbc605ed6..000000000 --- a/src/main/resources/assets/refinedstorage/recipes/fortune_1_upgrade.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EFE", - "BUB", - "EEE" - ], - "key": { - "E": { - "item": "refinedstorage:quartz_enriched_iron" - }, - "F": { - "type": "refinedstorage:enchanted_book", - "id": "fortune", - "level": 1 - }, - "B": { - "item": "minecraft:bookshelf" - }, - "U": { - "item": "refinedstorage:upgrade", - "data": 0 - } - }, - "result": { - "item": "refinedstorage:upgrade", - "data": 7 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/fortune_2_upgrade.json b/src/main/resources/assets/refinedstorage/recipes/fortune_2_upgrade.json deleted file mode 100644 index e3f158407..000000000 --- a/src/main/resources/assets/refinedstorage/recipes/fortune_2_upgrade.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EFE", - "BUB", - "EEE" - ], - "key": { - "E": { - "item": "refinedstorage:quartz_enriched_iron" - }, - "F": { - "type": "refinedstorage:enchanted_book", - "id": "fortune", - "level": 2 - }, - "B": { - "item": "minecraft:bookshelf" - }, - "U": { - "item": "refinedstorage:upgrade", - "data": 0 - } - }, - "result": { - "item": "refinedstorage:upgrade", - "data": 8 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/fortune_3_upgrade.json b/src/main/resources/assets/refinedstorage/recipes/fortune_3_upgrade.json deleted file mode 100644 index 6c246e070..000000000 --- a/src/main/resources/assets/refinedstorage/recipes/fortune_3_upgrade.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EFE", - "BUB", - "EEE" - ], - "key": { - "E": { - "item": "refinedstorage:quartz_enriched_iron" - }, - "F": { - "type": "refinedstorage:enchanted_book", - "id": "fortune", - "level": 3 - }, - "B": { - "item": "minecraft:bookshelf" - }, - "U": { - "item": "refinedstorage:upgrade", - "data": 0 - } - }, - "result": { - "item": "refinedstorage:upgrade", - "data": 9 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/silk_touch_upgrade.json b/src/main/resources/assets/refinedstorage/recipes/silk_touch_upgrade.json deleted file mode 100644 index 952386d2f..000000000 --- a/src/main/resources/assets/refinedstorage/recipes/silk_touch_upgrade.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EFE", - "BUB", - "EEE" - ], - "key": { - "E": { - "item": "refinedstorage:quartz_enriched_iron" - }, - "F": { - "type": "refinedstorage:enchanted_book", - "id": "silk_touch" - }, - "B": { - "item": "minecraft:bookshelf" - }, - "U": { - "item": "refinedstorage:upgrade", - "data": 0 - } - }, - "result": { - "item": "refinedstorage:upgrade", - "data": 6 - } -} \ No newline at end of file