From 33ce8ecff6975c1ab7b935af9fccc6b9cf4f8f18 Mon Sep 17 00:00:00 2001 From: ybw0014 Date: Mon, 2 Aug 2021 03:13:32 +0800 Subject: [PATCH 1/5] enhanced furnaces' luck multiplier for raw ores in 1.17 --- .../listeners/EnhancedFurnaceListener.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index 6660b96af..53aab98bc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -15,6 +15,7 @@ import org.bukkit.event.inventory.FurnaceSmeltEvent; import org.bukkit.inventory.FurnaceInventory; import org.bukkit.inventory.ItemStack; +import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.EnhancedFurnace; import io.papermc.lib.PaperLib; @@ -67,7 +68,14 @@ public class EnhancedFurnaceListener implements Listener { if (state instanceof Furnace) { FurnaceInventory inventory = ((Furnace) state).getInventory(); - int amount = inventory.getSmelting().getType().toString().endsWith("_ORE") ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; + + boolean multiplier = inventory.getSmelting().getType().toString().endsWith("_ORE"); + // In 1.17, the raw ores should benefit from luck multiplier + if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17) && inventory.getSmelting().getType().toString().startsWith("RAW_")) { + multiplier = true; + } + + int amount = multiplier ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; Optional result = SlimefunPlugin.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting()); if (result.isPresent()) { From dfd6d372cd54a935cad7fb02dafd0bf12925750a Mon Sep 17 00:00:00 2001 From: ybw0014 Date: Mon, 2 Aug 2021 12:20:13 +0800 Subject: [PATCH 2/5] use slimefun tag --- .../listeners/EnhancedFurnaceListener.java | 6 ++++-- .../slimefun4/utils/tags/SlimefunTag.java | 5 +++++ src/main/resources/tags/raw_metals.json | 16 ++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/tags/raw_metals.json diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index 53aab98bc..030e2fa83 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -18,6 +18,7 @@ import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.EnhancedFurnace; +import io.github.thebusybiscuit.slimefun4.utils.tags.SlimefunTag; import io.papermc.lib.PaperLib; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -68,10 +69,11 @@ public class EnhancedFurnaceListener implements Listener { if (state instanceof Furnace) { FurnaceInventory inventory = ((Furnace) state).getInventory(); + Material smelting = inventory.getSmelting().getType(); + boolean multiplier = SlimefunTag.ORES.isTagged(smelting); - boolean multiplier = inventory.getSmelting().getType().toString().endsWith("_ORE"); // In 1.17, the raw ores should benefit from luck multiplier - if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17) && inventory.getSmelting().getType().toString().startsWith("RAW_")) { + if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17) && SlimefunTag.RAW_METALS.isTagged(smelting)) { multiplier = true; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java index ccd1106e5..aaa5ca28c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java @@ -64,6 +64,11 @@ public enum SlimefunTag implements Tag { */ NETHER_ORES, + /** + * All raw metals in 1.17+ + */ + RAW_METALS, + /** * All Shulker boxes, normal and colored. */ diff --git a/src/main/resources/tags/raw_metals.json b/src/main/resources/tags/raw_metals.json new file mode 100644 index 000000000..bfda371df --- /dev/null +++ b/src/main/resources/tags/raw_metals.json @@ -0,0 +1,16 @@ +{ + "values" : [ + { + "id" : "minecraft:raw_iron", + "required" : false + }, + { + "id" : "minecraft:raw_gold", + "required" : false + }, + { + "id" : "minecraft:raw_copper", + "required" : false + } + ] +} From 7021df8a542e7b639a3f02d97bf215b1bd1a18bc Mon Sep 17 00:00:00 2001 From: ybw0014 Date: Tue, 3 Aug 2021 17:58:59 +0800 Subject: [PATCH 3/5] remove unnecessary codes --- .../implementation/listeners/EnhancedFurnaceListener.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index 030e2fa83..9b330ecdc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -70,12 +70,7 @@ public class EnhancedFurnaceListener implements Listener { if (state instanceof Furnace) { FurnaceInventory inventory = ((Furnace) state).getInventory(); Material smelting = inventory.getSmelting().getType(); - boolean multiplier = SlimefunTag.ORES.isTagged(smelting); - - // In 1.17, the raw ores should benefit from luck multiplier - if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17) && SlimefunTag.RAW_METALS.isTagged(smelting)) { - multiplier = true; - } + boolean multiplier = SlimefunTag.ORES.isTagged(smelting) || SlimefunTag.RAW_METALS.isTagged(smelting); int amount = multiplier ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; Optional result = SlimefunPlugin.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting()); From bced5ba4b1cdb606a488b0007eced539d4d636fe Mon Sep 17 00:00:00 2001 From: ybw0014 Date: Tue, 3 Aug 2021 18:26:34 +0800 Subject: [PATCH 4/5] add a new tag for luck multiplier --- .../implementation/listeners/EnhancedFurnaceListener.java | 5 +---- .../thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java | 8 +++++++- src/main/resources/tags/luck_multiplier_materials.json | 6 ++++++ 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/tags/luck_multiplier_materials.json diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index 9b330ecdc..9a2d59e88 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -15,7 +15,6 @@ import org.bukkit.event.inventory.FurnaceSmeltEvent; import org.bukkit.inventory.FurnaceInventory; import org.bukkit.inventory.ItemStack; -import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.EnhancedFurnace; import io.github.thebusybiscuit.slimefun4.utils.tags.SlimefunTag; @@ -69,9 +68,7 @@ public class EnhancedFurnaceListener implements Listener { if (state instanceof Furnace) { FurnaceInventory inventory = ((Furnace) state).getInventory(); - Material smelting = inventory.getSmelting().getType(); - boolean multiplier = SlimefunTag.ORES.isTagged(smelting) || SlimefunTag.RAW_METALS.isTagged(smelting); - + boolean multiplier = SlimefunTag.LUCK_MULTIPLIER_MATERIALS.isTagged(inventory.getSmelting().getType()); int amount = multiplier ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; Optional result = SlimefunPlugin.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting()); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java index aaa5ca28c..ab4735942 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java @@ -21,6 +21,7 @@ import org.bukkit.block.data.Waterlogged; import io.github.thebusybiscuit.slimefun4.api.exceptions.TagMisconfigurationException; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.BlockPlacer; +import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.EnhancedFurnace; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.accelerators.CropGrowthAccelerator; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.talismans.Talisman; import io.github.thebusybiscuit.slimefun4.implementation.items.multiblocks.miner.IndustrialMiner; @@ -235,7 +236,12 @@ public enum SlimefunTag implements Tag { /** * All materials (ores) which trigger the Talisman of the Caveman. */ - CAVEMAN_TALISMAN_TRIGGERS; + CAVEMAN_TALISMAN_TRIGGERS, + + /** + * All materials which benefit from the luck multiplier of {@link EnhancedFurnace} + */ + LUCK_MULTIPLIER_MATERIALS; /** * Lookup table for tag names. diff --git a/src/main/resources/tags/luck_multiplier_materials.json b/src/main/resources/tags/luck_multiplier_materials.json new file mode 100644 index 000000000..6c44424f7 --- /dev/null +++ b/src/main/resources/tags/luck_multiplier_materials.json @@ -0,0 +1,6 @@ +{ + "values" : [ + "#slimefun:ores", + "#slimefun:raw_metals" + ] +} From bb147e26ab5969a66b1f48f02b1ebffc46d8e119 Mon Sep 17 00:00:00 2001 From: ybw0014 Date: Wed, 4 Aug 2021 20:46:30 +0800 Subject: [PATCH 5/5] rename the new tag --- .../implementation/listeners/EnhancedFurnaceListener.java | 2 +- .../github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java | 2 +- ...lier_materials.json => enhanced_furnace_luck_materials.json} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/main/resources/tags/{luck_multiplier_materials.json => enhanced_furnace_luck_materials.json} (100%) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index 9a2d59e88..66d3a7a09 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -68,7 +68,7 @@ public class EnhancedFurnaceListener implements Listener { if (state instanceof Furnace) { FurnaceInventory inventory = ((Furnace) state).getInventory(); - boolean multiplier = SlimefunTag.LUCK_MULTIPLIER_MATERIALS.isTagged(inventory.getSmelting().getType()); + boolean multiplier = SlimefunTag.ENHANCED_FURNACE_LUCK_MATERIALS.isTagged(inventory.getSmelting().getType()); int amount = multiplier ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; Optional result = SlimefunPlugin.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting()); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java index ab4735942..e85bd56ec 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/tags/SlimefunTag.java @@ -241,7 +241,7 @@ public enum SlimefunTag implements Tag { /** * All materials which benefit from the luck multiplier of {@link EnhancedFurnace} */ - LUCK_MULTIPLIER_MATERIALS; + ENHANCED_FURNACE_LUCK_MATERIALS; /** * Lookup table for tag names. diff --git a/src/main/resources/tags/luck_multiplier_materials.json b/src/main/resources/tags/enhanced_furnace_luck_materials.json similarity index 100% rename from src/main/resources/tags/luck_multiplier_materials.json rename to src/main/resources/tags/enhanced_furnace_luck_materials.json