Bukkit: How can I name an event?

I just started bukkit coding, and I tried to code a plugin that allows pvp for a specific player, and can disable it, but only for myself. It worked fine until it found that I needed an event to make this work, but I had not yet found out which event I needed. After watching a few videos / things on the Internet, I can not find anything to help me. If you could tell me how I would do it, that would be great. Also, if you could explain more about the events, which will also be appreciated :)

package me.impatheimpaler.test;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class togglepvp extends JavaPlugin implements Listener{

    public void onEnable() {

    }

    public void onDisable() {

    }

    List<String> toggled = new ArrayList<String>();

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if (cmd.getName().equalsIgnoreCase("togglepvp")) {
            if (!(sender instanceof Player)) {
                 sender.sendMessage("Only a Player can run this command.");
                 return false;
            }
            Player player = (Player) sender;
            if (toggled.contains(player.getName())) {
                 player.sendMessage(ChatColor.RED + "Outgoing PvP - ON");
                 toggled.add(player.getName());
                 return true;
            }
            player.sendMessage(ChatColor.GREEN + "Outgoing PvP - OFF");
            toggled.remove(player.getName());
            return true;
        }
    }
}
+4
source share
2 answers

To trigger an event that you can use:

Bukkit.getServer().getPluginManager().callEvent(myEvent)

, , , , , , . , Listener

public class MyHandlerClass implements Listener{
  //code
}

Main, , extends JavaPlugin. , onEnable() this.getServer().getPluginManager().registerEvents(Listener, this), Listener - :

@Override
public void onEnable(){
  this.getServer().getPluginManager().registerEvents(new MyHandlerClass(), this);
  //other code
}

, , (, implements Listener), , extends Event, @EventHandler, , EntityDamageByEntityEvent:

@EventHandler
public void entityDamageByEntity(EntityDamageByEntityEvent event){
  //your code here
  //use event.getEntity() to get the entity damaged, and event.getDamager() to get the damager
}

, , entityDamageByEntity() , , , .

, event.setCancelled(true)

+6

, , :)

, , , - , . , , - .

, Bukkit , -, , :

, bukkit minecraft, , .

Bukkit (, , , "" ), . (: , bukkit BlockBreakListener BlockBreakListener, .) EventHandler , , , .

, , BlockBreakMethod, , , WorldGuard ( ), Authme ( ). , , , " ", .

(, , ), , . , , - , . , , , , , HIGHER, , ( ).

, . , , Java-, ... : :)

+2

Source: https://habr.com/ru/post/1570228/


All Articles