diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java index 37a42170..3c213700 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java @@ -13,6 +13,7 @@ import com.willfp.ecoenchants.enchantments.ecoenchants.curse.PermanenceCurse; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.*; import com.willfp.ecoenchants.enchantments.ecoenchants.special.*; import com.willfp.ecoenchants.enchantments.ecoenchants.spell.Missile; +import com.willfp.ecoenchants.enchantments.ecoenchants.spell.Quake; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; @@ -249,6 +250,7 @@ public class EcoEnchants { public static final EcoEnchant STALWART = new Stalwart(); public static final EcoEnchant PLASMIC = new Plasmic(); public static final EcoEnchant MISSILE = new Missile(); + public static final EcoEnchant QUAKE = new Quake(); /** * Get all registered {@link EcoEnchant}s diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Quake.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Quake.java new file mode 100644 index 00000000..6f20245b --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Quake.java @@ -0,0 +1,35 @@ +package com.willfp.ecoenchants.enchantments.ecoenchants.spell; + +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.itemtypes.Spell; +import com.willfp.ecoenchants.integrations.antigrief.AntigriefManager; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; + +import java.util.Collection; + +public class Quake extends Spell { + public Quake() { + super("quake"); + } + + @Override + public void onRightClick(Player player, int level) { + int radius = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "radius-per-level") * level; + int damage = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage-per-level") * level; + + + Collection entities = player.getWorld().getNearbyEntities(player.getLocation(), radius, 3, radius); + + for (Entity entity : entities) { + if (entity.equals(player)) + continue; + if(!(entity instanceof LivingEntity)) continue; + if(!AntigriefManager.canInjure(player, (LivingEntity) entity)) + continue; + + ((LivingEntity) entity).damage(damage); + } + } +} diff --git a/Plugin/src/main/resources/enchants/spell/quake.yml b/Plugin/src/main/resources/enchants/spell/quake.yml new file mode 100644 index 00000000..7eaaecf2 --- /dev/null +++ b/Plugin/src/main/resources/enchants/spell/quake.yml @@ -0,0 +1,25 @@ +# +# Quake EcoEnchant +# + +name: "Quake" +description: Damages all nearby entities +enabled: true + +obtaining: + table: true + villager: true + loot: true + rarity: epic + +general-config: + targets: + - sword + grindstoneable: true + conflicts: [] + maximum-level: 3 + +config: + cooldown: 20 # In seconds + damage-per-level: 3 + radius-per-level: 2 \ No newline at end of file