package com.tom125813.he.enchantments.effects; import com.tom125813.he.HeistEnchantments; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.inventory.ItemStack; /** * Base class for all enchantment effects */ public abstract class EnchantmentEffect { protected final HeistEnchantments plugin; protected final String enchantmentId; public EnchantmentEffect(HeistEnchantments plugin, String enchantmentId) { this.plugin = plugin; this.enchantmentId = enchantmentId; } /** * Called when the enchantment should trigger its effect */ public abstract void trigger(Player player, ItemStack item, int level, Event event); /** * Called when an item with this enchantment is equipped */ public void onEquip(Player player, ItemStack item, int level) { // Override if needed } /** * Called when an item with this enchantment is unequipped */ public void onUnequip(Player player, ItemStack item, int level) { // Override if needed } /** * Called every tick for passive effects */ public void onTick(Player player, ItemStack item, int level) { // Override if needed } /** * Gets the enchantment ID this effect handles */ public String getEnchantmentId() { return enchantmentId; } /** * Gets the level of this enchantment on an item */ protected int getEnchantmentLevel(ItemStack item) { return plugin.getEnchantmentManager().getEnchantmentLevel(item, enchantmentId); } /** * Gets a configurable percentage from config */ protected double getConfigPercentage(String path, double defaultValue) { return plugin.getConfigManager().getEnchantmentDouble(enchantmentId, path, defaultValue); } /** * Gets a configurable command from config */ protected String getConfigCommand(String path, String defaultValue) { return plugin.getConfigManager().getEnchantmentString(enchantmentId, path, defaultValue); } }