import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class RuBukkit extends JavaPlugin implements Listener {
private final String ENCHANTMENT_NAME = "Blindness";
private final int ENCHANTMENT_LEVEL = 1;
private final int EFFECT_RADIUS = 4;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
registerEnchantment();
}
private void registerEnchantment() {
ItemStack item = new ItemStack(Material.DIAMOND_SWORD);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("Blindness Sword");
meta.addEnchant(getEnchantment(), ENCHANTMENT_LEVEL, true);
item.setItemMeta(meta);
Bukkit.addRecipe(getRecipe(item));
}
private CustomEnchantment getEnchantment() {
CustomEnchantment enchantment = new CustomEnchantment(ENCHANTMENT_NAME, "Blinds nearby enemies on death", 10);
enchantment.setRadius(EFFECT_RADIUS);
return enchantment;
}
private ShapedRecipe getRecipe(ItemStack result) {
ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(this, "blindness_sword"), result);
recipe.shape("D", "D", "S");
recipe.setIngredient('D', Material.DIAMOND);
recipe.setIngredient('S', Material.STICK);
return recipe;
}
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
Entity entity = event.getEntity();
if (entity.getKiller() != null) {
Player player = entity.getKiller();
ItemStack item = player.getInventory().getItemInMainHand();
if (item.containsEnchantment(getEnchantment())) {
Location location = entity.getLocation();
for (Entity nearby : location.getWorld().getNearbyEntities(location, EFFECT_RADIUS, EFFECT_RADIUS, EFFECT_RADIUS)) {
if (nearby instanceof Player && !((Player) nearby).equals(player)) {
((Player) nearby).addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 0));
}
}
}
}
}
}