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); } }
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.
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.?
@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 @EventHandler public void OnPlayerInteraction(PlayerInteractEvent e) { if (e.getAction()==Action.RIGHT_CLICK_AIR || e.getAction()==Action.RIGHT_CLICK_BLOCK){ if (e.getItem()!=null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().hasDisplayName() && e.getItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "Kit Selector")){ Inventory i = Bukkit.createInventory(null, 54, ChatColor.GOLD+"Kit Selector"); e.getPlayer().openInventory(i); } } }
@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.
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.
@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.