Помогите Не работают ивенты

Walker666_

Активный участник
Баллы
61
Имя в Minecraft
_The_Walker_
Пишу плагин по гайду, и когда очередь доходит ивентов, написал тестовый ивент компилирую плагин,
и вижу что при ломании блока ничего не пишет и не выдает опыт, вот код:
Код:
Код:
package ru.dev0.walkercore;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;

import net.md_5.bungee.api.ChatColor;

public class Handler implements Listener  {

   @EventHandler
   public void onPlayerJoin(BlockBreakEvent e) {
       Player p = e.getPlayer();
       if(e.getBlock().getType() == Material.ENDER_STONE) {
       p.sendMessage(ChatColor.RED + "Вы сломали нексус!");
       p.giveExp(100);   
       }
   }
}
Если вам нужен код Main класса отправлю.
 
Держи:
Код:
package ru.dev0.walkercore;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;


import net.md_5.bungee.api.ChatColor;

public class MainClass extends JavaPlugin {

    FileConfiguration config = getConfig();
    
    public void OnEnable() {
        Bukkit.getPluginManager().registerEvents(new Handler(), this);
    }
    
    public void OnDisable() {
        
    }
    
    public boolean checkSender(CommandSender sender) {
        if(sender instanceof Player) {
            return false;
        }
        return true;
    }
    
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("sethome")) {
            if(checkSender(sender)) {
                sender.sendMessage(ChatColor.RED + "Only players can use this command");
                return true;
            }
            Player p = (Player) sender;
            LocToConfig(p.getName(), p.getLocation());
            p.sendMessage(ChatColor.GOLD + "Core " + ChatColor.GRAY + ">> " + ChatColor.WHITE + "Дом успешно установлен");
            return true;
        }
        if(cmd.getName().equalsIgnoreCase("home")) {
            if(checkSender(sender)) {
                sender.sendMessage(ChatColor.RED + "Only players can use this command");
                return true;
            }
            Player p = (Player) sender;
            Location home = ConfigToLoc(p.getName());
            p.teleport(home);
            p.sendMessage(ChatColor.GOLD + "Core " + ChatColor.GRAY + ">> " + ChatColor.WHITE + "Вы успешно телепортировались домой");
            return true;
        }
        return false;
    }
    
    public void LocToConfig(String name, Location loc) {
        config.set("locations." + name + ".world", loc.getWorld().getName());
        config.set("locations." + name + ".x", loc.getX());
        config.set("locations." + name + ".y", loc.getY());
        config.set("locations." + name + ".z", loc.getZ());
        saveConfig();
    }
    
    public Location ConfigToLoc(String name) {
        Location loc = new Location(Bukkit.getWorld(config.getString("locations." + name + ".world")),
                config.getDouble("locations." + name + ".x"),
                config.getDouble("locations." + name + ".y"),
                config.getDouble("locations." + name + ".z"));
        return loc;
    }
}
 
У тебя не правильно названы методы, которые должны вызываться при включении и выключении плагина.

Правильный вариант:
PHP:
@Override
public void onEnable() {
    //todo
}

@Override
public void onDisable() {
   //todo
}

Во избежание подобных ситуаций - всегда помечай переопределяемые методы @Override, а лучше включи "ошибку", если какой-то метод не помечен, чтобы не было подобных проблем в будущем.
 
Назад
Верх