1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Сделал код в плагине, но он не работает

Тема в разделе "Разработка плагинов для новичков", создана пользователем 20Денис16, 21 июл 2024.

  1. Автор темы
    20Денис16

    20Денис16 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    DenUnlock2105
    Как запустить этот EventHandler или как вытащить из него переменную loc и добавить в коллекцию

    @EventHandler
    public void onPlayerUse(PlayerInteractEvent e) {
    Player p = e.getPlayer();
    Block block = e.getClickedBlock();
    if(e.getAction() == Action.LEFT_CLICK_BLOCK && block == null && block.getType() != Material.BRICK) {

    Location loc = block.getLocation();

    arg0.sendMessage(ChatColor.RED + "найдены координаты " + loc);

    } else {
    Location loc = new Location(world, 100, 100, 100);

    arg0.sendMessage(ChatColor.RED + "не найдены координаты установлены страндартные " + loc);

    }

    }

    Полный код ниже.
    package ru.kinetic;



    import java.awt.TrayIcon.MessageType;

    import java.util.Collection;



    import org.bukkit.Bukkit;

    import org.bukkit.Location;

    import org.bukkit.Material;

    import org.bukkit.Server;

    import org.bukkit.World;

    import org.bukkit.block.Block;

    import org.bukkit.command.Command;

    import org.bukkit.command.CommandExecutor;

    import org.bukkit.command.CommandSender;

    import org.bukkit.craftbukkit.Main;

    import org.bukkit.entity.Entity;

    import org.bukkit.entity.Player;

    import org.bukkit.entity.Zombie;

    import org.bukkit.event.EventHandler;

    import org.bukkit.event.block.Action;

    import org.bukkit.event.player.PlayerInteractEvent;

    import org.bukkit.plugin.Plugin;

    import org.bukkit.plugin.java.JavaPlugin;

    import org.bukkit.scheduler.BukkitRunnable;



    import net.md_5.bungee.api.ChatColor;



    public class CommandManager implements CommandExecutor {

    private org.bukkit.craftbukkit.Main main1;





    public boolean onCommand(CommandSender arg0, Command arg1, String arg2, String[] arg3) throws IllegalArgumentException {



    if(!(arg0 instanceof Player))

    {

    arg0.sendMessage(ChatColor.RED + "Error");

    return true;

    }

    else if(arg1.getName().equalsIgnoreCase("exploreplug")) {



    Player player = (Player) arg0;

    World world = player.getWorld();


    Server server = ru.kinetic.Main.plugin.getServer();



    new BukkitRunnable() {

    int time = 1;



    @EventHandler

    public void onPlayerUse(PlayerInteractEvent e) {



    Player p = e.getPlayer();

    Block block = e.getClickedBlock();



    if(e.getAction() == Action.LEFT_CLICK_BLOCK && block == null && block.getType() != Material.BRICK) {

    Location loc = block.getLocation();

    arg0.sendMessage(ChatColor.RED + "найдены координаты " + loc);

    }

    else {

    Location loc = new Location(world, 100, 100, 100);

    arg0.sendMessage(ChatColor.RED + "не найдены координаты установлены страндартные " + loc);

    }

    }



    public void run() {

    Location loc = new Location(world, 100, 100, 100);

    Collection<Entity> entities = loc.getWorld().getNearbyEntities(loc, 10, 100, 10); //получение всех сущностей в радиусе КОЛЛЕКЦИЯ



    for(Entity entity : entities) {

    //Будем искать всех зомби в радиусе вокруг локации

    if(entity instanceof Zombie) { //проверка зомби ли это

    Zombie zombie = (Zombie) entity;



    //TODO что-нить

    }

    if(!(entity instanceof Zombie)) { //проверка не зомби ли это

    double entry = entity.getLocation().getX()-5;

    double entry1 = entity.getLocation().getY()+1;

    double entry2 = entity.getLocation().getZ()-5;

    entity.teleport(new Location(Bukkit.getWorld("world"), entry, entry1, entry2));

    //TODO что-нить

    }





    }





    }



    }.runTaskTimer(ru.kinetic.Main.plugin, 0, 20 );



    arg0.sendMessage(ChatColor.RED + "Zombies");

    return true;

    }

    return false;



    }





    }
     
  2. CioLay

    CioLay Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    NordNM
    Чтобы запустить EventHandler зарегистрируй его в onEnable()
    HTML:
     getServer().getPluginManager().registerEvents(...)


    Извлечение переменной loc и добавление её в коллекцию:

    Создать locations типа List<Location>, чтобы хранить найденные локации.

    Код:
        private List<Location> locations = new ArrayList<>();
    
    
        @EventHandler
        public void onPlayerUse(PlayerInteractEvent e) {
            Player p = e.getPlayer();
            Block block = e.getClickedBlock();
    
            if (e.getAction() == Action.LEFT_CLICK_BLOCK && block != null && block.getType() != Material.BRICK) {
                Location loc = block.getLocation();
                locations.add(loc); // Добавляем локацию в коллекцию
                p.sendMessage(ChatColor.RED + "найдены координаты " + loc);
            } else {
                Location loc = new Location(p.getWorld(), 100, 100, 100);
                locations.add(loc); // Добавляем стандартную локацию в коллекцию
    
                p.sendMessage(ChatColor.RED + "не найдены координаты установлены стандартные " + loc);
    
            }
        }
     
  3. Автор темы
    20Денис16

    20Денис16 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    DenUnlock2105
    А как извлечь её из коллекции потом
    попробовал, но наткнулся на ошибки
    upload_2024-7-22_1-54-54.png
     
  4. Автор темы
    20Денис16

    20Денис16 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    DenUnlock2105
  5. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    У тебя код не компилируется, поэтому и не может исполниться.
    При компиляции IDE должна показывать тебе ошибки.
    Даже не пытайся запускать плагин, пока ошибки не будут исправлены.

    Также, если у тебя Eclipse, то рекомендую поставить вот эту галку, чтобы ты даже джарник не получал без корректной компиляции:
    [​IMG]

    Также для вставки кода на форуме используй эту кнопку, а то нечитабельно:
    upload_2024-7-23_12-3-2.png
     
    Последнее редактирование: 23 июл 2024

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