Hello, I have already tried coding the plugin but I can't figure out the what I am doing wrong. I was wondering if someone could create me a 'magic clock' like plugin but using dye to toggle it. When toggled I want it to change lore and item. Like the one on the hive server: If you do create this please give me the java files not just the jar. It would really help me learn about coding. This is currently what I have, if you would like to work with it. Code:java import java.util.ArrayList;import java.util.List; import org.bukkit.Bukkit;import org.bukkit.ChatColor;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.event.player.PlayerQuitEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.PlayerInventory;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin implements Listener { //Register pluginspublic void onEnable() {getServer().getPluginManager().registerEvents(this, this);} //List for hiding playersArrayList<String> players = new ArrayList<String>(); public void onInventoryClick(InventoryClickEvent event) {event.setCancelled(true);} //Removing player from listpublic void onQuitEvent(PlayerQuitEvent event) {Player player = event.getPlayer();players.remove(player.getName());} //Adding people to the list and giving them spawn items@EventHandlerpublic void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); players.add(player.getName()); ItemStack compass = new ItemStack(Material.COMPASS);ItemMeta compassMeta = (ItemMeta) compass.getItemMeta();compassMeta.setDisplayName(ChatColor.GOLD + "Quick Tranist");List<String> compassList = new ArrayList<String>();compassList.add(ChatColor.GRAY + "Right click to open meanu");compassMeta.setLore(compassList);compass.setItemMeta(compassMeta); ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");List<String> enableList = new ArrayList<String>();enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");enableMeta.setLore(enableList);enable.setItemMeta(enableMeta); PlayerInventory inv = player.getInventory(); inv.setItem(9, enable); if(player.hasPlayedBefore() == false) {inv.setItem(9, enable);inv.setItem(1, compass);} } //Visibility Dye@EventHandlerpublic void onPlayerClickEvent(PlayerInteractEvent event) { Player player = event.getPlayer(); ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");List<String> enableList = new ArrayList<String>();enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");enableMeta.setLore(enableList);enable.setItemMeta(enableMeta); ItemStack disable = new ItemStack(Material.INK_SACK, 1, (short) 8);;ItemMeta disableMeta = (ItemMeta) disable.getItemMeta();disableMeta.setDisplayName(ChatColor.RED + "Players >> Disabled");List<String> disableList = new ArrayList<String>();disableList.add(ChatColor.WHITE + "Right click to enable player visability");disableMeta.setLore(disableList);disable.setItemMeta(disableMeta); if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Players >> Enabled")){if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){if(!this.players.contains(event.getPlayer().getName())){for(Player targetPlayers : Bukkit.getOnlinePlayers()){if(player.canSee(targetPlayers)){player.hidePlayer(targetPlayers);} else{event.setCancelled(true);}this.players.add(player.getName());}player.getInventory().removeItem(enable);player.setItemInHand(disable);player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.GREEN + "On");}}}if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Players >> Disabled")){if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){for(Player targetPlayers : Bukkit.getOnlinePlayers()){if(player.canSee(targetPlayers)){event.setCancelled(true);} else {player.showPlayer(targetPlayers);}this.players.remove(player.getName());}player.getInventory().removeItem(disable);player.setItemInHand(enable);player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.RED + "Off");}}} } What I was trying to do with the code. Code: if { Player Joins Add player to the list } If a Player right clicks with Green Dye named "Players >> Enabled"{ Make all players on the list disappear Change the item to grey dye with lore to "Players >> Disabled" } if { A Player right clicks with Grey Dye named "Players >> Disabled" Make all players on the list appear Change the item to Green dye and lore "Players >> Enabled" } # This one isn't as important, but I'm guessing it would help make the plugin run more smoothly. if { Player Quits remove player from the list } Forgot about this part: Plugin category: EXAMPLE Suggested name: PlayerVisability What I want: Explained above "forgot this part" Ideas for commands: A permission for people who can be seen when invisibility is on, A permissions to use it. Ideas for permissions: No commands When I'd like it by: ASAP, I already have given you some code that should help you (I think) THANK YOU SO MUCH! I've been stuck on this for a few days.
If your after coding experience you would be better off in the Plugin Development forum asking for assistance on finishing it yourself.
Code:java import java.util.ArrayList;import java.util.List; import org.bukkit.Bukkit;import org.bukkit.ChatColor;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.event.player.PlayerQuitEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.PlayerInventory;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin implements Listener { //Register pluginspublic void onEnable() {getServer().getPluginManager().registerEvents(this, this);} //List for hiding playersArrayList<String> players = new ArrayList<String>(); @EventHandlerpublic void onInventoryClick(InventoryClickEvent event) {event.setCancelled(true);} //Removing player from list@EventHandlerpublic void onQuitEvent(PlayerQuitEvent event) {Player player = event.getPlayer();players.remove(player.getName());} //Adding people to the list and giving them spawn items@EventHandlerpublic void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); players.add(player.getName()); ItemStack compass = new ItemStack(Material.COMPASS);ItemMeta compassMeta = (ItemMeta) compass.getItemMeta();compassMeta.setDisplayName(ChatColor.GOLD + "Quick Tranist");List<String> compassList = new ArrayList<String>();compassList.add(ChatColor.GRAY + "Right click to open meanu");compassMeta.setLore(compassList);compass.setItemMeta(compassMeta); ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");List<String> enableList = new ArrayList<String>();enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");enableMeta.setLore(enableList);enable.setItemMeta(enableMeta); PlayerInventory inv = player.getInventory(); inv.setItem(8, enable); if(player.hasPlayedBefore() == false) {inv.setItem(8, enable);inv.setItem(1, compass);} } //Visibility Dye@EventHandlerpublic void onPlayerClickEvent(PlayerInteractEvent event) { Player player = event.getPlayer(); ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");List<String> enableList = new ArrayList<String>();enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");enableMeta.setLore(enableList);enable.setItemMeta(enableMeta); ItemStack disable = new ItemStack(Material.INK_SACK, 1, (short) 8);;ItemMeta disableMeta = (ItemMeta) disable.getItemMeta();disableMeta.setDisplayName(ChatColor.RED + "Players >> Disabled");List<String> disableList = new ArrayList<String>();disableList.add(ChatColor.WHITE + "Right click to enable player visability");disableMeta.setLore(disableList);disable.setItemMeta(disableMeta); if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Players >> Enabled")){if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){if(!this.players.contains(event.getPlayer().getName())){for(Player targetPlayers : Bukkit.getOnlinePlayers()){if(player.canSee(targetPlayers)){player.hidePlayer(targetPlayers);} else{event.setCancelled(true);}this.players.add(player.getName());}player.getInventory().removeItem(enable);player.setItemInHand(disable);player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.GREEN + "On");}}}elseif(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Players >> Disabled")){if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){for(Player targetPlayers : Bukkit.getOnlinePlayers()){if(player.canSee(targetPlayers)){event.setCancelled(true);} else {player.showPlayer(targetPlayers);}this.players.remove(player.getName());}player.getInventory().removeItem(disable);player.setItemInHand(enable);player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.RED + "Off");}}} } This works for me. - Added @EventHandler - Changed slot 9 to slot 8 - Changed if(){} if(){} to an if(){ }else if(){}
I tried but some said to request for a plugin here. Becuase I'm not the best at coding. I'm kinda asking if someone could spoon feed me the fixed and working code. Sorry, could you change the code to work, its not working for me.
after a reload you are not on the list anymore [you start server, join it -> you are in the list] since that does not persist over a reload/restart told infopaste already he adds people to the list but at the same time he checks if they are not on the list before he allows interaction
I fixed it but once it toggles it on it doesn't toggle it off, it doesnt change my item in hand nor does it change the item lore. I'm just wondering if someone could "hand" me the perfect code. Also can you make it can support reloads, and save array lists, please and thank you! I think I was able to add in a cooldown for 5 seconds EDIT by Moderator: merged posts, please use the edit button instead of double posting.
infopaste Here is a library that should be able to help you out. Code:java //Name this file McdLibimport java.util.ArrayList; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.Material;import org.bukkit.entity.Player;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta; public class McdLib { public static boolean isHidden = false; /* public void onJoin(PlayerJoinEvent e){ Player p = (Player)e.getPlayer(); McdLib.showPlayers(p); } */ public static void showPlayers(Player pl){ for(Player p : Bukkit.getOnlinePlayers()){ pl.showPlayer(p); } resetDye(pl); } /* public void onClick(PlayerInteractEvent e){ Player p = (Player)e.getPlayer(); if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR){ if(McdLib.isHidden == false){ McdLib.hidePlayers(p); McdLib.isHidden = true; }else{ McdLib.showPlayers(p); McdLib.isHidden = false; } */ public static void hidePlayers(Player pl){ for(Player p: Bukkit.getOnlinePlayers()){ pl.hidePlayer(p); } handleDye(pl); changeDyeHidden(pl); } public static void handleDye(Player p){ p.getInventory().remove(Material.INK_SACK); } public static void resetDye(Player p){ //Change Dye Color to Green. ArrayList<String> lr = new ArrayList<String>(); ItemStack gDye = new ItemStack(Material.INK_SACK,1,(short)10); ItemMeta gDyeM = gDye.getItemMeta(); lr.add(ChatColor.GRAY+"Enable and Disable Player Visibility."); gDyeM.setLore(lr); gDyeM.setDisplayName(ChatColor.GREEN+"Players -> Enabled"); gDye.setItemMeta(gDyeM); p.getInventory().addItem(gDye); } public static void changeDyeHidden(Player p){ //Change Dye Color to Gray. ArrayList<String> lr = new ArrayList<String>(); ItemStack gDye = new ItemStack(Material.INK_SACK,1,(short)8); ItemMeta gDyeM = gDye.getItemMeta(); lr.add(ChatColor.GRAY+"Enable and Disable Player Visibility."); gDyeM.setLore(lr); gDyeM.setDisplayName(ChatColor.GREEN+"Players -> "+ChatColor.RED+"DISABLED"); gDye.setItemMeta(gDyeM); p.getInventory().addItem(gDye); }} http://pastebin.com/XtDsz9dm