Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Как выдать эффект всем неподалеку Entity?

serb

Новичок
Баллы
6
Имя в Minecraft
serbioZ
Как сделать так, чтобы после того как игрок убил Entity, на расстоянии в 4 блока от точки его смерти выдавалась всем слепота? То есть, игрок убивает зомби и всем другим Entity, которые находятся на расстоянии в 4 блока от его точки смерти, выдавалась слепота или какой-нибудь другой эффект.

Я хочу сделать это как зачарование. Если у игрока в руках меч с этим зачарованием, то после убийства Любого Entity всем вокруг него выдавалась слепота.

Так же, я хочу, чтобы после убийства Entity, коровы, куры, свиньи и другие животные, которые находились рядом, разбегались в разные стороны будто их ударили. Это можно реализовать?
 
Как сделать так, чтобы после того как игрок убил Entity, на расстоянии в 4 блока от точки его смерти выдавалась всем слепота? То есть, игрок убивает зомби и всем другим Entity, которые находятся на расстоянии в 4 блока от его точки смерти, выдавалась слепота или какой-нибудь другой эффект.

Я хочу сделать это как зачарование. Если у игрока в руках меч с этим зачарованием, то после убийства Любого Entity всем вокруг него выдавалась слепота.

Так же, я хочу, чтобы после убийства Entity, коровы, куры, свиньи и другие животные, которые находились рядом, разбегались в разные стороны будто их ударили. Это можно реализовать?
Код:
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));
                    }
                }
            }
        }
    }

}
 
Код:
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));
                    }
                }
            }
        }
    }

}
Спасибо большое! "Чтобы после убийства Entity, коровы, куры, свиньи и другие животные, которые находились рядом, разбегались в разные стороны будто их ударили" Возможно ли это вообще сделать?
 

Поделиться этой страницей

Назад
Верх