Java Minecraft Bukkit活动
我正在尝试为minecraft进行bukkit编程,但由于某些原因,我被事件缠住了。这是我的密码: 主类文件:Java Minecraft Bukkit活动,java,events,minecraft,bukkit,Java,Events,Minecraft,Bukkit,我正在尝试为minecraft进行bukkit编程,但由于某些原因,我被事件缠住了。这是我的密码: 主类文件: package com.plugin1; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import o
package com.plugin1;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginDescriptionFile;
//import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import net.md_5.bungee.api.ChatColor;
public class Plugin extends JavaPlugin {
public int songStage;
public static Plugin plugin;
public void OnEnable () {
PluginDescriptionFile pluginDesc = getDescription();
Logger logger = getLogger();
plugin = this;
registerEvents(this, new BlockBreak());
logger.info(pluginDesc.getName() + " is enabled! (V. " + pluginDesc.getVersion() + ")");
}
public void OnDisable () {
PluginDescriptionFile pluginDesc = getDescription();
Logger logger = Logger.getLogger("Plugin");
plugin = null;
logger.info(pluginDesc.getName() + " is disabled! (V. " + pluginDesc.getVersion() + ")");
}
public static void registerEvents(org.bukkit.plugin.Plugin plugin, Listener... listeners) {
for (Listener listener : listeners) {
Bukkit.getServer().getPluginManager().registerEvents(listener, plugin);
}
}
public static Plugin getPlugin() {
return plugin;
}
}
package com.plugin1;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
public class BlockBreak implements Listener {
@EventHandler(priority = EventPriority.HIGH)
public void OnBlockBreak (BlockBreakEvent e) {
Player p = e.getPlayer();
p.sendMessage("Block broken.");
}
}
事件类文件:
package com.plugin1;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginDescriptionFile;
//import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import net.md_5.bungee.api.ChatColor;
public class Plugin extends JavaPlugin {
public int songStage;
public static Plugin plugin;
public void OnEnable () {
PluginDescriptionFile pluginDesc = getDescription();
Logger logger = getLogger();
plugin = this;
registerEvents(this, new BlockBreak());
logger.info(pluginDesc.getName() + " is enabled! (V. " + pluginDesc.getVersion() + ")");
}
public void OnDisable () {
PluginDescriptionFile pluginDesc = getDescription();
Logger logger = Logger.getLogger("Plugin");
plugin = null;
logger.info(pluginDesc.getName() + " is disabled! (V. " + pluginDesc.getVersion() + ")");
}
public static void registerEvents(org.bukkit.plugin.Plugin plugin, Listener... listeners) {
for (Listener listener : listeners) {
Bukkit.getServer().getPluginManager().registerEvents(listener, plugin);
}
}
public static Plugin getPlugin() {
return plugin;
}
}
package com.plugin1;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
public class BlockBreak implements Listener {
@EventHandler(priority = EventPriority.HIGH)
public void OnBlockBreak (BlockBreakEvent e) {
Player p = e.getPlayer();
p.sendMessage("Block broken.");
}
}
基本上,这不会返回错误。我已经通过控制台,但什么都没有。当我打破一个街区,实际上什么也没发生
我尝试了一些东西:我已经看过了,尝试了多个视频教程,在minecraft论坛上尝试了一个文本教程,但仍然一无所获。我还联系了一位为bukkit插件编写代码的服务器所有者,但他无法修复此问题
如果有人能帮我,请告诉我
提前谢谢 我已经测试了你的代码,但它确实不起作用。我想你的活动注册不起作用。对于我的插件,我在main类中使用:
package me.Nightfighter001.GlobalSystem.Main;
import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import me.Nightfighter001.GlobalSystem.Listener.Join;
public class main extends JavaPlugin {
public static main getPlugin() {
return plugin;
}
private static main plugin;
@Override
public void onEnable() {
plugin = this;
new Join(this);
ConsoleCommandSender console = Bukkit.getConsoleSender();
console.sendMessage(new StringBuilder("\247c[\2476GlobalSystem\247c] \247bVersion \247c")
.append(getDescription().getVersion()).append(" \247bdes Plugins wurde aktiviert!").toString());
console.sendMessage(
"\247c[\2476GlobalSystem\247c] \247bDieses Plugin darf nur benutzt werden, wenn der Entwickler \247cNightfighter001 \247bes erlaubt!");
return;
}
@Override
public void onDisable() {
ConsoleCommandSender console = Bukkit.getConsoleSender();
console.sendMessage(new StringBuilder("\247c[\2476GlobalSystem\247c] \247bVersion \2474")
.append(getDescription().getVersion()).append(" \247bdes Plugins wurde deaktiviert!").toString());
}
}
在EventClass中:
package me.Nightfighter001.GlobalSystem.Listener;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import me.Nightfighter001.GlobalSystem.Main.main;
public class Join implements Listener {
public Join(main main) {
plugin = main;
plugin.getServer().getPluginManager().registerEvents(this, main);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent ev) {
ev.setJoinMessage("");
}
main plugin = main.getPlugin();
}
正如您在我的示例中所看到的,我使用了
PlayerJoinEvent
,但它也适用于BlockBreakEvent
。我希望这有帮助:)并且为我糟糕的英语道歉;D如果不将onEnable
(和onDisable
)方法的名称大写,代码将正常工作onEnable
和onEnable
是两种不同的方法,因为java是区分大小写的,而且由于您试图覆盖JavaPlugin
超类中的特定方法,因此需要以完全相同的方式拼写它们
据我所知,常见的惯例是,无论如何,方法的开头都是小写字母。
@Override
注释在捕获这些类型的错误时非常有用,因为它让编译器知道您要覆盖一个现有的方法,如果该方法不存在(例如,如果您拼错了名称或添加了不同的参数),它会提醒您(它还让任何阅读代码的人立即知道您正在重写现有方法或实现接口)。我认为您没有以正确的方式注册侦听器
试试这个代码,告诉我它是否有效…我真的很想帮助你
首先,不要使用“Plugin”作为主类的名称…使用“Main”代替
启用:
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getPluginManger().registerEvents(new Join(this),this);
}
}
听众:
public class Join implements Listener {
private Main plugin;
public Join(Main plugin) {
this.plugin = plugin;
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent ev) {
ev.setJoinMessage("Just another test");
}
}
希望它能工作…下面是一个在进程中启动服务器的代码示例:
package me.Nightfighter001.GlobalSystem.Listener;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import me.Nightfighter001.GlobalSystem.Main.main;
public class Join implements Listener {
public Join(main main) {
plugin = main;
plugin.getServer().getPluginManager().registerEvents(this, main);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent ev) {
ev.setJoinMessage("");
}
main plugin = main.getPlugin();
}
如果某些服务器所有者认为您的代码没有问题,那么可能是安装错误的编译器吗?请确保按照有关如何设置Eclipse的说明进行操作,因为为了minecraft Modding的缘故,我极力推荐使用Eclipse。我一直在通过它运行其他代码,如命令,但到目前为止,它都是通过一个类文件完成的。然而,事件是的,我使用的是Eclipse。然后我真的不知道你做错了什么…你使用的是什么IDE和哪个Bukkit oder插口版本?没错,但我也在代码中这样做了,他/她说它不起作用:/我在这里发布之前测试了这个解决方案,以确保它的准确性(使用Craftbukkit 1.8.7,API版本1.8.7-R0.1-SNAPSHOT)。当名称更改为
onEnable
方法时,问题中发布的代码片段会正常工作。我看不出代码不能与更正一起工作的任何原因。自定义registerEvents
方法是正确的,提问者没有具体说明他对您的代码做了什么以及具体做了什么你没有按预期去。