这次我们来学习制作一个简单的GUI
这是也是最后一期,感谢您的陪伴。

创建一个包

我们和上次一样,在org.mallor.sky右键新建一个包,我给他命名gui

创建类

我们开始创建一个类,在这里我给他命名位GUI。

开始

我们创建类之后,在类的后面输入implements CommandExecutor,他会自动导入类,然后输入下面代码

    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
        return false;

然后呢我们开始创建一个GUI,我们在{}中输入

        Player player =(Player)commandSender;
        Inventory GUI =Bukkit.createInventory(null,27, ChatColor.YELLOW+"GUI");
        player.openInventory(GUI);
        return false;

Player player = (Player)commandSender的意思是新建一个player,然后用这个代替Player,而且它等于commandSender中的Player
Inventory GUI =Bukkit.createInventory(null,27, ChatColor.YELLOW+"GUI");这个的意识是新建一个GUI,它等于Bukkit新建一个GUI,GUI的参数呢,等于括号内的,类型等于null,大小等于27个格(在mc中一般有两种[除了自己新建的]一个是27格,一个是54格)。
player.openInventory(GUI);这个就是玩家触发GUI时输入的指令。

注册

GUI注册需要两步,和指令差不多,我们回到主类在onEnable方法中输入

getCommand("GUI").setExecutor(new GUI());

然后回到plugin.yml,
我们新建一个指令
输入

  GUI:
    description: GUI

然后开始构建

测试

拓展

现在我们新建了GUI,可是他里面没有东西,而且这个东西玩家可以放入,不过放进去物品就没有了,相当于垃圾箱。所以我们需要放入东西,
我们在我们的GUI参数下输入代码

ItemStack item = new ItemStack(Material.BED);
GUI.setItem(10,item);

这是我的完整代码

public class GUI implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
        Player player =(Player)commandSender;
        Inventory GUI =Bukkit.createInventory(null,27, ChatColor.YELLOW+"GUI");
        ItemStack item = new ItemStack(Material.BED);
        player.openInventory(GUI);
        GUI.setItem(10,item);
        return false;
    }
}

然后我们构建测试

他就生成了64个床,这个床我们是可以拿走的,而且你关闭后,在输入指令还可以拿走。
下面我们就需要监听器帮助。

创建类

我们首先创建一个类,就叫做InventoryClick(都可以),然后我们给他导入类,在类的后面加上implements Listener,然后输入下面代码

 @EventHandler
    public void InventoryClick(InventoryClickEvent event){

}

在方法中输入

    @EventHandler
    public void InventoryClick(InventoryClickEvent event){
    if (event.getView().getTitle().equalsIgnoreCase(ChatColor.YELLOW+"GUI"));
    event.setCancelled(true);
    }

注册

这个和之前一样,在主类中输入下面代码

getServer().getPluginManager().registerEvents(new InventoryClick(),this);

剩下的一些用指令打开GUI啥的都很简单,大家可以单独问我,或者看看官方文档。
我在这里就不教学了。