Kit selector

Discussion in 'Plugin Development' started by Kipnugget, Sep 18, 2016.

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

    Kipnugget

    Hello, i was working on a kitpvp plugin named MePvP! but i am a begining coder.
    can someone tell me how i add my kits to my compass? that when i click it you can click the kits?

    here are the classes:

    Main
    Code:
    package me.mepvp.main;
    
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import me.mepvp.listeners.PlayerListeners;
    
    public class Main extends JavaPlugin {
    
        private static Main instance;
    
        public void log(String string) {
            System.out.println(string);
           
        }
    
        public void registerCommands() {
    
        }
    
        public static Main getInstance() {
            return instance;
    
        }
    
        public void registerListeners() {
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(new PlayerListeners(this), this);
    
        }
    
        public void onEnable() {
            registerListeners();
            registerCommands();
            instance = null;
        }
    
        public void onDisable() {
            instance = null;
           
        }
    
        public boolean onCommand(Command sender, Command cmd, String commandLabel, String[] args) {
    
            if (cmd.getName().equalsIgnoreCase("Warrior") && sender instanceof Player) {
    
                Player p = (Player) sender;
    
                p.getInventory().clear();
                ItemStack WarriorSword = new ItemStack(Material.STONE_SWORD);
                ItemMeta m = WarriorSword.getItemMeta();
                WarriorSword.setItemMeta(m);
                p.getInventory().clear();
                p.getInventory().addItem(WarriorSword);
                p.getInventory().setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
    
            }
    
            if (cmd.getName().equalsIgnoreCase("Archer") && sender instanceof Player) {
    
                Player p = (Player) sender;
    
                p.getInventory().clear();
                ItemStack ArcherBow = new ItemStack(Material.BOW);
                ItemMeta m = ArcherBow.getItemMeta();
                ArcherBow.addEnchantment(Enchantment.ARROW_INFINITE, 1);
                ArcherBow.setItemMeta(m);
                p.getInventory().clear();
                p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
                p.getInventory().addItem(ArcherBow);       
                p.getInventory().addItem(new ItemStack(Material.ARROW, 1));
                p.getInventory().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
                p.getInventory().setChestplate(new ItemStack(Material.LEATHER_LEGGINGS));
            }
            return false;
           
        }
    
    }

    PlayerListeners:


    Code:
    package me.mepvp.listeners;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    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.entity.PlayerDeathEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.potion.PotionEffect;
    
    import me.mepvp.main.Main;
    
    public class PlayerListeners implements Listener {
    
        Main plugin;
    
        public PlayerListeners(Main instance) {
            this.plugin = instance;
    
        }
    
        @EventHandler
        public void PlayerJoin(PlayerJoinEvent e) {
            Player p = e.getPlayer();
            String pname = p.getName();
            p.getInventory().clear();
    
            Bukkit.broadcastMessage("" + ChatColor.GRAY + e.getPlayer().getName() + ChatColor.RED + " Has joined KitPvP!");
    
            ItemStack kitselector = new ItemStack(Material.COMPASS);
            ItemMeta m = kitselector.getItemMeta();
            m.setDisplayName(ChatColor.RED + "Kit Selector");
            kitselector.setItemMeta(m);
            p.getInventory().setItem(4, kitselector);
           
        }
           
        @EventHandler
        public void PlayerLeave(PlayerQuitEvent e) {
            Player p = e.getPlayer();
            String pname = p.getName();
            p.getInventory().clear();
            Bukkit.broadcastMessage("" + ChatColor.GRAY + pname + ChatColor.RED + " Has left KitPvP!");
       
            }
    
        @EventHandler
        public void Death(PlayerDeathEvent e) {
    
            Player p = e.getEntity();
            Player k = p.getKiller();
            e.getDrops().clear();
            e.setDeathMessage("" + ChatColor.GRAY + e.getEntity() + ChatColor.RED + " Got killed by " + ChatColor.GRAY
                    + p.getKiller());
    
        }
    
        @EventHandler
        public void Respawn(PlayerRespawnEvent e) {
            Player p = e.getPlayer();
    
            ItemStack kitselector = new ItemStack(Material.COMPASS);
            ItemMeta m = kitselector.getItemMeta();
            m.setDisplayName(ChatColor.RED + "Kit Selector");
            kitselector.setItemMeta(m);
            p.getInventory().setItem(4, kitselector);
    
        }
    
    }
     
  2. Offline

    Zombie_Striker

    You never use this, and it is a very bad idea to use a static instance for this. Delete this field.

    Use getLogger() if you want to log something. Delete this method.

    If this method does nothing ,delete it.

    Because of #1, delete this

    This is a very bad idea. Because of #1, delete this

    Because of #1, delete this whole method (since it would do nothing)

    Only return false if something failed. If the command worked as it should have, return true

    You never do anything with these variables. Delete them.

    Your main problem:
    Listen to playerInteractevent. If the player is clicking the compass, open the "kit" inventory/ whatever you use for your kits.
     
  3. Offline

    Kipnugget

    Thnx ill use your advice!
    But can you send a code for: Listen to playerInteractevent. If the player is clicking the compass, open the "kit" inventory/ whatever you use for your kits.?
     
  4. Offline

    JanTuck

    @Kipnugget
    Sorry for spoonfeeding.

    Here but you have to add everything to the inventory.
    Remember to listen for the InventoryClickEvent after to listen if a player click in the inventory.
    Code:java
    1.  
    2. @EventHandler
    3. public void OnPlayerInteraction(PlayerInteractEvent e) {
    4. if (e.getAction()==Action.RIGHT_CLICK_AIR || e.getAction()==Action.RIGHT_CLICK_BLOCK){
    5. if (e.getItem()!=null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().hasDisplayName() && e.getItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "Kit Selector")){
    6. Inventory i = Bukkit.createInventory(null, 54, ChatColor.GOLD+"Kit Selector");
    7. e.getPlayer().openInventory(i);
    8. }
    9. }
    10. }
    11.  
     
    Last edited: Sep 18, 2016
  5. Offline

    Zombie_Striker

    @Kipnugget
    If you know how to create events, just provide "PlayerInteractEvent" into the paramaeter. After that, get the item in the player's hand using Player#getItemInHand(). If the item is not null, get the type and test if it is equal to Material.COMPASS. If so, do what you want with your kits.
     
  6. Offline

    Kipnugget

    I am a beginner idk, can you plz do this little code for me????

    THNX JAN!!!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Sep 18, 2016
  7. Offline

    Zombie_Striker

    @JanTuck
    Don't be sorry. Just don't do it. You're not helping anyone just providing code without giving any explanation to what the code does or how it does it.
     
Thread Status:
Not open for further replies.

Share This Page