Solved How do I stop it from giving compasses everything someone joins the game

Discussion in 'Plugin Development' started by SympatheticSky, Feb 18, 2017.

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

    SympatheticSky

    Code:
    package com.sky.sympathy;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class GUIMenu extends JavaPlugin implements Listener {
    
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
      
        public void teleportInWorld(Player player, int x, int y, int z) {
            player.teleport(new Location(player.getWorld(), x, y, z));
        }
      
        private void openGUI(Player player) {
            Inventory inv = Bukkit.createInventory(null, 9, ChatColor.AQUA + "Server Selector");
            ItemStack survival = new ItemStack(Material.DIAMOND_PICKAXE);
            ItemMeta survivalMeta = survival.getItemMeta();
            ItemStack creative = new ItemStack(Material.GRASS);
            ItemMeta creativeMeta = creative.getItemMeta();
            ItemStack spawn = new ItemStack(Material.COMPASS);
            ItemMeta spawnMeta = spawn.getItemMeta();
            ItemStack spawn2 = new ItemStack(Material.DIAMOND_SWORD);
            ItemMeta spawn2Meta = spawn2.getItemMeta();
          
            survivalMeta.setDisplayName(ChatColor.DARK_RED + "Hub - Survival");
            survival.setItemMeta(survivalMeta);
          
            creativeMeta.setDisplayName(ChatColor.GREEN + "Hub - Creative");
            creative.setItemMeta(creativeMeta);
          
            spawnMeta.setDisplayName(ChatColor.GOLD + "Hub - Spawn");
            spawn.setItemMeta(spawnMeta);
          
            spawn2Meta.setDisplayName(ChatColor.GOLD + "Survival - Spawn");
            spawn2.setItemMeta(spawn2Meta);
          
            inv.setItem(0, survival);
            inv.setItem(1, creative);
            inv.setItem(2, spawn);
            inv.setItem(6, spawn2);
          
            player.openInventory(inv);
        }
      
        @EventHandler
        public void onInventoryClick(InventoryClickEvent event) {
            if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Server 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 DIAMOND_PICKAXE:
                teleportInWorld(player, -187, 5, 665);
                player.closeInventory();
                player.sendMessage(String.format("%sTeleported To %sSurvival Warp%s!", ChatColor.GOLD, ChatColor.DARK_RED, ChatColor.GOLD));
                break;
            case GRASS:
                teleportInWorld(player, -188, 5, 662);
                player.closeInventory();
                player.sendMessage(String.format("%sTeleported To %sCreative Warp%s!", ChatColor.GOLD, ChatColor.GREEN, ChatColor.GOLD));
                break;
            case COMPASS:
                teleportInWorld(player, -158, 5, 678);
                player.closeInventory();
                player.sendMessage(String.format("%sTeleported To %sSpawn%s!", ChatColor.GOLD, ChatColor.YELLOW, ChatColor.GOLD));
                break;
            case DIAMOND_SWORD:
                teleportInWorld(player, -128, 67, 481);
                player.closeInventory();
                player.sendMessage(String.format("%sTeleported To %sSurvival Spawn%s!", ChatColor.GOLD, ChatColor.DARK_RED, ChatColor.GOLD));
                break;
            default:
                player.closeInventory();
                break;
            }
        }
      
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            event.getPlayer().getInventory()
                    .addItem(new ItemStack(Material.COMPASS));
          
        }
    
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event) {
            Action a = event.getAction();
            ItemStack is = event.getItem();
          
            if (a == Action.PHYSICAL || is == null || is.getType() == Material.AIR)
                return;
          
            if (is.getType() == Material.COMPASS)
                openGUI(event.getPlayer());
        }
    
    }
    

    HELP
     
  2. Offline

    timtower Administrator Administrator Moderator

    Zombie_Striker and MrGeneralQ like this.
  3. Offline

    Scrapnix

    You can use the simple method:

    ItemStack is =...
    You can check also the ItemMeta in the ItemStack, just copy the ItemStack from your other method.

    if(!p.getInventory().contains(ItemStack) {
    p.getInventory.setItem(slot, ItemStack)
    }

    Sry, written from my phone ;)
     
  4. Offline

    Zombie_Striker

    @Scrapnix @SympatheticSky
    Just remember that the contains method is Durability, Amount, ItemMeta, and enchantment specific. If you only want to check if the item contains a compass of some sort, use the Material contains (contains(Material); )
     
  5. Offline

    SympatheticSky

    Thanks for the help! It has been solved.
     
  6. Offline

    Zombie_Striker

    @SympatheticSky
    If your problem has been solved, edit the title so it has the solved prefix.
     
Thread Status:
Not open for further replies.

Share This Page