GUI help, It won't open!

Discussion in 'Plugin Development' started by Nick_Titan, May 23, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    Nick_Titan

    So I am creating a GUI and I saved the basic code for it in a text file a while I go. I stopped coding for a while and I'm a bit rusty but I thought I had everything right. However when I go to use it as a player interact event it doesn't work. I tried activating it through commands but that brings up a chest type object where you can take the items out of it instead of the items doing things. Here is my code:
    Code:
    package me.nico;
    
    import java.util.Map;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Fireball;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Cancellable;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerEggThrowEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    @SuppressWarnings("unused")
    public class Boss extends JavaPlugin{
    
        @Override
        public void onEnable() {
            getLogger().info("Custom bosses plugin enabled! Created by Nico_Vittoria!");
        }
       
        @Override
        public void onDisable() {
           
        }
       
        private void openGUI(Player player){
            Inventory inv = Bukkit.createInventory(null, 9, ChatColor.AQUA + "Boss Selector");
           
            ItemStack spider = new ItemStack (Material.GOLD_SWORD);
            ItemMeta spidermeta = spider.getItemMeta();
            spidermeta.setDisplayName("Spider Boss");
            spider.setItemMeta(spidermeta);
           
            ItemStack ghast = new ItemStack (Material.DIAMOND_SWORD);
            ItemMeta ghastmeta = ghast.getItemMeta();
            ghastmeta.setDisplayName("Ghast Boss");
            ghast.setItemMeta(ghastmeta);
           
            ItemStack skeleton = new ItemStack (Material.IRON_SWORD);
            ItemMeta skeletonmeta = skeleton.getItemMeta();
            skeletonmeta.setDisplayName("Skeleton Boss");
            skeleton.setItemMeta(skeletonmeta);
           
            inv.setItem(3, skeleton);
           
            inv.setItem(5, ghast);
           
            inv.setItem(4, spider);
           
            player.openInventory(inv);
        }
       
            @EventHandler
            public void onInventoryClick(InventoryClickEvent event){
            if (!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Boss Selector"))
                return;
            Player player = (Player) event.getWhoClicked();
            event.setCancelled(true);
           
            if (event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR || !event.getCurrentItem().hasItemMeta()){
                player.closeInventory();
                return;
            }
            switch(event.getCurrentItem().getType()) {
            case IRON_SWORD:
                player.performCommand("bossone");
                player.closeInventory();
                break;
            case DIAMOND_SWORD:
                player.performCommand("bosstwo");
                player.closeInventory();
                break;
            case GOLD_SWORD:
                player.performCommand("bossthree");
                player.closeInventory();
                break;
            default:
                player.closeInventory();
                break;
               
            }
        }
    
            @EventHandler
            public void onPlayerInteract(PlayerInteractEvent event){
            Player player = event.getPlayer();
            Action a = event.getAction();
            ItemStack is = event.getItem();
            if (a == Action.PHYSICAL || is == null || is.getType() == Material.AIR){
                return;
            }
            if (is.getType() == Material.STICK){
                openGUI(player);
                }
            }
    
               
            @EventHandler
            public void onGhastDamage(EntityDamageEvent event) {
                Player player = (Player) event.getEntity();
                if (event.getCause().equals(Fireball.class)) {
                    player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 300, 1));
                }
            }
            //Commands start here
           
            public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
                if (cmd.getName().equalsIgnoreCase("bossone") && sender instanceof Player){
                    Player player = (Player) sender;
                    @SuppressWarnings("deprecation")
                    LivingEntity skele = player.getWorld().spawnCreature(player.getLocation(), EntityType.SKELETON);
                    skele.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 1000000000, 2));
                    skele.getEquipment().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
                    skele.getEquipment().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
                    skele.getEquipment().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
                    skele.getEquipment().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
                    skele.setCustomName("SKELETON BOSS");
                    skele.setCustomNameVisible(true);
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("bosstwo") && sender instanceof Player){
                    Player player = (Player) sender;
                    @SuppressWarnings("deprecation")
                    LivingEntity ghast = player.getWorld().spawnCreature(player.getLocation(), EntityType.GHAST);
                    ghast.addPotionEffect(new PotionEffect(PotionEffectType.HEALTH_BOOST, 1000000000, 2));
                    ghast.setCustomName("GHAST BOSS");
                    ghast.setCustomNameVisible(true);
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("bossthree") && sender instanceof Player){
                    Player player = (Player) sender;
                    @SuppressWarnings("deprecation")
                    LivingEntity entity = player.getWorld().spawnCreature(player.getLocation(), EntityType.SPIDER);
                    entity.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 1000000000, 2));
                    entity.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 1000000000, 2));
                    entity.addPotionEffect(new PotionEffect(PotionEffectType.HEALTH_BOOST, 1000000000, 2));
                    entity.setCustomName("SPIDER BOSS");
                    entity.setCustomNameVisible(true);
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("bosshelp") && sender instanceof Player){
                    Player player = (Player) sender;
                    player.sendMessage(ChatColor.GOLD + "To use boss mobs you need to get the boss egg. To do this use /bossmobs. For some more information do /bossinfo.");
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("bossinfo") && sender instanceof Player){
                    Player player = (Player) sender;
                    player.sendMessage(ChatColor.GOLD + "Skeleton Boss: A super strong skeleton with armor and strength potions! \n Ghast Boss: A powerful boss with extra health and shoots fireballs that poison you! \n Spider Boss: A scary monster tat you can't see! Its invisible and powerful!");
                    return true;
                }
                if(cmd.getName().equalsIgnoreCase("bossmobs")){
                    Player player = (Player) sender;
                    ItemStack item = new ItemStack(Material.STICK);
                    ItemMeta meta = item.getItemMeta();
                    meta.setDisplayName("Boss Mobs");
                    item.setItemMeta(meta);
                    if (player.getItemInHand().getType() == Material.AIR) {
                        player.getInventory().setItemInHand(item);
                    } else {
                        player.getInventory().addItem(item);
                    }
                    return true;
                }
                return false;
            }
            
     
  2. Offline

    Zombie_Striker

    I don't think the main class is "unused". Remove this annotation.

    1. Bukkit already logs your plugins for you.
    2. You need to register the class with the events. Add "implements Listener" after you extend JavaPlugin, and add the line "Bukkit.getPluginManager().registerEvents(Listener (replace with "this"), Plugin (replace with "this"))" inside the onEnable.

    If your onDisable does nothing, then remove it.
     
    mine-care likes this.
Thread Status:
Not open for further replies.

Share This Page