首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bukkit事件

Bukkit事件
EN

Stack Overflow用户
提问于 2016-02-28 20:02:04
回答 4查看 2K关注 0票数 2

我试图进入bukkit编程为我的世界,但出于某种原因,我被困在事件。这是我的密码:

主类文件:

代码语言:javascript
复制
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;
        }
   }

事件类文件:

代码语言:javascript
复制
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.");
    }
}

基本上,这不返回错误。我已经通过控制台什么都没有了。当我打破一个街区,字面上什么都没有发生!

我尝试过几件事:我已经经历过,尝试过多个视频教程,也尝试过关于“我的世界”论坛的文本教程,但仍然一无所获。我还联系了一个服务器所有者,他编写了bukkit插件,但他无法修复这个问题.

如果有人能帮我,请告诉我!

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-29 12:16:34

我认为你没有以正确的方式登记听众.

试试这段代码告诉我它是否有效..。我真的很想帮你

首先,不要用"Plugin“作为主类的名称.用“主”代替。

使:

代码语言:javascript
复制
public class Main extends JavaPlugin {

    public void onEnable() {
        Bukkit.getPluginManger().registerEvents(new Join(this),this);
    }

}

听众:

代码语言:javascript
复制
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");
    }
}

希望它能成功..。

票数 1
EN

Stack Overflow用户

发布于 2017-10-26 18:48:22

下面是一个在进程中启动服务器的代码示例:

代码语言:javascript
复制
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();
}
票数 2
EN

Stack Overflow用户

发布于 2016-02-28 21:52:32

我已经测试过你的代码了,它真的不起作用。我觉得你的事件登记不管用。对于我的插件,我在mainClass中使用了以下内容:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
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。我希望这能帮上忙:)对不起我的英语不好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35687552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档