From 70b7765bc3edef00698046a5999ad77c88cef896 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 13 Jan 2021 20:59:38 +0000 Subject: [PATCH] Added Lucky Catch enchantment --- .../ecoenchants/enchantments/EcoEnchants.java | 2 + .../ecoenchants/normal/LuckyCatch.java | 51 +++++++++++++++++++ .../resources/enchants/normal/luckycatch.yml | 24 +++++++++ 3 files changed, 77 insertions(+) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/LuckyCatch.java create mode 100644 eco-core/core-plugin/src/main/resources/enchants/normal/luckycatch.yml diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java index 60a1e610..23142561 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java @@ -128,6 +128,7 @@ import com.willfp.ecoenchants.enchantments.ecoenchants.normal.Leeching; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.Lesion; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.Levitate; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.LiquidShot; +import com.willfp.ecoenchants.enchantments.ecoenchants.normal.LuckyCatch; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.Lumberjack; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.MagmaWalker; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.Magnetic; @@ -470,6 +471,7 @@ public class EcoEnchants { public static final EcoEnchant CHARGE = new Charge(); public static final EcoEnchant ASCEND = new Ascend(); public static final EcoEnchant ARBORIST = new Arborist(); + public static final EcoEnchant LUCKY_CATCH = new LuckyCatch(); /** * Get all registered {@link EcoEnchant}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/LuckyCatch.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/LuckyCatch.java new file mode 100644 index 00000000..de143d7e --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/LuckyCatch.java @@ -0,0 +1,51 @@ +package com.willfp.ecoenchants.enchantments.ecoenchants.normal; + +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; +import com.willfp.ecoenchants.enchantments.util.EnchantChecks; +import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerFishEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +public class LuckyCatch extends EcoEnchant { + public LuckyCatch() { + super( + "lucky_catch", EnchantmentType.NORMAL + ); + } + + @EventHandler + public void onFish(@NotNull final PlayerFishEvent event) { + Player player = event.getPlayer(); + ItemStack item = player.getInventory().getItemInMainHand(); + + if (!EnchantChecks.item(item, this)) { + return; + } + + int level = EnchantChecks.getItemLevel(item, this); + + if (this.getDisabledWorlds().contains(player.getWorld())) { + return; + } + + Entity caught = event.getCaught(); + + if (!(caught instanceof Item)) { + return; + } + + if (!EnchantmentUtils.passedChance(this, level)) { + return; + } + + Item caughtItem = (Item) caught; + + caughtItem.getItemStack().setAmount(caughtItem.getItemStack().getAmount() * 2); + } +} diff --git a/eco-core/core-plugin/src/main/resources/enchants/normal/luckycatch.yml b/eco-core/core-plugin/src/main/resources/enchants/normal/luckycatch.yml new file mode 100644 index 00000000..8dda35af --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/enchants/normal/luckycatch.yml @@ -0,0 +1,24 @@ +# +# Lucky Catch EcoEnchant +# + +name: "Lucky Catch" +description: Chance to double fishing drops. +enabled: true + +obtaining: + table: true + villager: true + loot: true + rarity: legendary + +general-config: + targets: + - rod + grindstoneable: true + disabled-in-worlds: [] + conflicts: [] + maximum-level: 3 + +config: + chance-per-level: 15 \ No newline at end of file