Illuminatiiiiii
1/4/2019 - 9:13 PM

Armor Stand GUI

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);
        }
    }

}