For Episode 16:
package me.illuminatiproductions.youtubeplugin;
import me.illuminatiproductions.youtubeplugin.commands.ArmorStandGUICommand;
import me.illuminatiproductions.youtubeplugin.events.MenuHandler;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
public final class YoutubePlugin extends JavaPlugin {
@Override
public void onEnable() {
// Plugin startup logic
getServer().getPluginManager().registerEvents(new MenuHandler(), this);
getCommand("armorstand").setExecutor(new ArmorStandGUICommand(this)); //Opens main menu
}
//Create and open the main Armor Stand menu
public void openMainMenu(Player player){
Inventory main_menu = Bukkit.createInventory(player, 9, ChatColor.BLUE + "Armor Stand GUI");
//Options for menu
ItemStack create = new ItemStack(Material.ARMOR_STAND); //Create a new armor stand
ItemMeta create_meta = create.getItemMeta();
create_meta.setDisplayName(ChatColor.GREEN + "Create");
ArrayList<String> lore = new ArrayList<>();
lore.add(ChatColor.DARK_PURPLE + "Create a new Armor Stand");
create_meta.setLore(lore);
create.setItemMeta(create_meta);
//Close button
ItemStack close = new ItemStack(Material.BARRIER);
ItemMeta close_meta = close.getItemMeta();
close_meta.setDisplayName(ChatColor.RED + "Close Menu");
close.setItemMeta(close_meta);
//Add everything
main_menu.setItem(0, create);
main_menu.setItem(8, close);
player.openInventory(main_menu);
}
}
package me.illuminatiproductions.youtubeplugin.commands;
import me.illuminatiproductions.youtubeplugin.YoutubePlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ArmorStandGUICommand implements CommandExecutor {
YoutubePlugin plugin;
public ArmorStandGUICommand(YoutubePlugin plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(sender instanceof Player){
Player player = (Player) sender;
plugin.openMainMenu(player); //Opens the main menu to this player
}
return true;
}
}
package me.illuminatiproductions.youtubeplugin.events;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
public class MenuHandler implements Listener {
@EventHandler
public void onMenuClick(InventoryClickEvent e){
Player player = (Player) e.getWhoClicked();
//Menu list
final String MAIN_MENU = ChatColor.BLUE + "Armor Stand GUI";
//Determine which inventory is open
if (e.getClickedInventory().getTitle().equalsIgnoreCase(MAIN_MENU)){
//Figure out what button was clicked
switch(e.getCurrentItem().getType()){
case ARMOR_STAND:
player.sendMessage("Opened Armor Stand Create Menu");
//Open the menu for creating an armor stand
break;
case BARRIER:
player.sendMessage("Closing Menu.");
player.closeInventory();
break;
}
e.setCancelled(true);
}
}
}