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 dc176eb9..4e0eaa01 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 @@ -223,6 +223,7 @@ import com.willfp.ecoenchants.enchantments.ecoenchants.special.Pentashot; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Preservation; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Prosperity; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Razor; +import com.willfp.ecoenchants.enchantments.ecoenchants.special.Reaper; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Repairing; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Soulbound; import com.willfp.ecoenchants.enchantments.ecoenchants.special.Spring; @@ -486,6 +487,7 @@ public class EcoEnchants { public static final EcoEnchant ANGER_ARTIFACT = new AngerArtifact(); public static final EcoEnchant NAUTILUS_ARTIFACT = new NautilusArtifact(); public static final EcoEnchant SWEEP_ARTIFACT = new SweepArtifact(); + public static final EcoEnchant REAPER = new Reaper(); /** * Get all registered {@link EcoEnchant}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Reaper.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Reaper.java new file mode 100644 index 00000000..1de77329 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Reaper.java @@ -0,0 +1,14 @@ +package com.willfp.ecoenchants.enchantments.ecoenchants.special; + +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; +import org.jetbrains.annotations.NotNull; + +public class Reaper extends EcoEnchant { + public Reaper() { + super( + "reaper", EnchantmentType.SPECIAL + ); + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Soulbound.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Soulbound.java index a27f84da..6963aad6 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Soulbound.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Soulbound.java @@ -1,7 +1,10 @@ package com.willfp.ecoenchants.enchantments.ecoenchants.special; import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; +import com.willfp.ecoenchants.enchantments.util.EnchantChecks; +import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -39,6 +42,18 @@ public class Soulbound extends EcoEnchant { return; } + if (player.getKiller() instanceof Player) { + Player killer = (Player) player.getKiller(); + ItemStack item = killer.getInventory().getItemInMainHand(); + if (EnchantChecks.item(item, EcoEnchants.REAPER)) { + if (!(EcoEnchants.REAPER.getDisabledWorlds().contains(player.getWorld()))) { + final int points = EnchantChecks.getItemLevel(item, EcoEnchants.REAPER); + if (EnchantmentUtils.passedChance(EcoEnchants.REAPER, points)) { + return; + } + } + } + } for (ItemStack itemStack : player.getInventory().getContents()) { if (itemStack == null) { continue; diff --git a/eco-core/core-plugin/src/main/resources/enchants/special/reaper.yml b/eco-core/core-plugin/src/main/resources/enchants/special/reaper.yml new file mode 100644 index 00000000..ce051c24 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/enchants/special/reaper.yml @@ -0,0 +1,24 @@ +# +# Frozen EcoEnchant +# + +name: "Reaper of souls" +description: Gives you a chance to knock out things with a soulbound. +enabled: true + +obtaining: + table: true + villager: false + loot: false + rarity: veryspecial + +general-config: + targets: + - hoe + grindstoneable: true + disabled-in-worlds: [] + conflicts: [] + maximum-level: 5 + +config: + chance-per-level: 2 \ No newline at end of file