gpt4 book ai didi

java - 使用多个类的 Bukkit

转载 作者:行者123 更新时间:2023-12-02 03:34:56 27 4
gpt4 key购买 nike

我正在尝试同时学习 Java 和 Bukkit(几个月前我已经学习了一些基本的 Java 并制作了一个简单的文本游戏)。

我知道当我使用 1 个类时我在做什么,但是,正如你可能知道的那样,一切都变得困惑,所以我正在重新编码所有内容,但试图使其变得更干净,但我遇到了一个问题,除了主类之外,没有其他类工作,这是我的代码。

主要类(class):

package me.Camaloony.RoyalCosmetics;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import net.md_5.bungee.api.ChatColor;

public class Core extends JavaPlugin implements Listener {

Logger myPluginLogger = Bukkit.getLogger();

@Override
public void onEnable()
{
PluginManager manager = getServer().getPluginManager();
manager.registerEvents(this, this);
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.AQUA + "Royal Cosmetics has been enabled!");
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
}
@Override
public void onDisable()
{
myPluginLogger.info("Test 1 has been disabled!");
myPluginLogger.severe("Test 1 has an error and has not loaded.");
}
}

这是我的二年级

package me.Camaloony.RoyalCosmetics;

import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class MainGUI implements Listener {

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

Player player = (Player) sender;

if (commandLabel.equalsIgnoreCase("Cosmetics")) {
createMainMenu(player);
}

return false;
}

@EventHandler
public void onInvClick(InventoryClickEvent event){
if (event.getCurrentItem().getItemMeta().getDisplayName().contains("Particles GUI")) {
event.setCancelled(true);
}
}

public void createMainMenu(Player player) {
Inventory inv = Bukkit.getServer().createInventory(null, 45, "Royal Cosmetics");

ItemStack item1 = new ItemStack(Material.REDSTONE);

ItemMeta item1Meta = item1.getItemMeta();

ArrayList<String> item1Lore = new ArrayList<String>();

item1Lore.add("Click here to go to the particles GUI");

item1Meta.setDisplayName("Particles GUI");
item1Meta.setLore(item1Lore);

item1.setItemMeta(item1Meta);

inv.setItem(0, item1);

player.openInventory(inv);
}

}

我怎样才能让第二节课实际上是“阅读”?

非常感谢!

最佳答案

由于您的第二个(非主)类是一个Listener,因此您也可以注册该类的实例来监听事件,类似于您对主类所做的操作:

manager.registerEvents(new MainGUI(), this);

但是,据我所知,MainGUI 类中的 onCommand 方法不会做太多事情。当您在 main 类中声明返回类型为 booleanonCommand 方法时,您将从 JavaPlugin 中覆盖该方法> 您的主类扩展的类(然后从其他地方调用该方法),而您的 MainGUI 类中的 onCommand 方法将不会被使用,除非您自己调用它某处。如果您想在主类之外实现命令行为,您可以使用 CommandExecutor 类,如下所示 here .

关于java - 使用多个类的 Bukkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37549149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com