从零开始教你编写Spigot插件(六)
这次我们来学习制作一个简单的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啥的都很简单,大家可以单独问我,或者看看官方文档。
我在这里就不教学了。