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

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

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;



}





}
 
Чтобы запустить 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);

        }
    }
 
А как извлечь её из коллекции потом
попробовал, но наткнулся на ошибки
upload_2024-7-22_1-54-54.png
 
А как извлечь её из коллекции потом
попробовал, но наткнулся на ошибки
Посмотреть вложение 67467
У тебя код не компилируется, поэтому и не может исполниться.
При компиляции IDE должна показывать тебе ошибки.
Даже не пытайся запускать плагин, пока ошибки не будут исправлены.

Также, если у тебя Eclipse, то рекомендую поставить вот эту галку, чтобы ты даже джарник не получал без корректной компиляции:
7yWav.png


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

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

Назад
Верх