我正在尝试对我的插件进行简单的添加,这样当有人加入时,他们会收到一条消息“Heyyyyyyy”。我的插件也有一些命令。
这是我的Main
课程:
package me.ben.test;
import org.bukkit.Bukkit;
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 Main extends JavaPlugin implements Listener {
@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(new Click(), this);
getLogger().info("The Plugin Has Been Enabled!");
}
@Override
public void onDisable() {
getLogger().info("The Plugin Has Been Disabled!");
}
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
if (cmd.getName().equalsIgnoreCase("hello") && sender instanceof Player) {
Player player = (Player) sender;
player.sendMessage("Hello, " + player.getName() + "!");
return true;
} else if (cmd.getName().equalsIgnoreCase("isonline")
&& args.length == 1) {
Player target = Bukkit.getServer().getPlayer(args[0]);
if (target == null) {
sender.sendMessage(ChatColor.AQUA + "Player " + args[0]
+ " is not online.");
return true;
} else if (target != null) {
sender.sendMessage(ChatColor.AQUA + "Player " + args[0]
+ " is online.");
return true;
} else {
return false;
}
}
return false;
}
}
这是我的Click
课程:
package me.ben.test;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class Click extends JavaPlugin implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage("Heyyyyyyy");
}
}
所有@EventHandler
内容都不起作用所以我快速做了这个简单的事情。
答案 0 :(得分:1)
您只能有一个扩展JavaPlugin
的类。从extends JavaPlugin
班级中删除Click
- 只有您的主要班级extend JavaPlugin
。
查看Bukkit's official plugin tutorial以获取有关编码Bukkit插件的帮助。
答案 1 :(得分:0)
您在Listener
课程中使用Main
,但您没有在那里处理任何事件,只有在您希望该课程能够处理bukkit事件时才使用它。
如果您愿意,可以在Listener
课程中使用Main
,但是您需要在主课程中使用处理事件的方法,但它会变得凌乱在大项目......
您也不需要在主要课程的任何地方扩展JavaPlugin
。
如果您想使用您的主要课程:
public class Main extends JavaPlugin implements Listener {
@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(this, this);
getLogger().info("The Plugin Has Been Enabled!");
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage("Heyyyyyyy");
}
}
如果要使用分隔的类来处理事件:
public class Main extends JavaPlugin {
@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(new Click(), this);
getLogger().info("The Plugin Has Been Enabled!");
}
}
public class Click implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage("Heyyyyyyy");
}
}
请勿忘记您需要正确创建plugin.yml
文件,否则无法正常工作。