oop demo
🧩 Syntax:
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);
}
}