Magic Dye!

Discussion in 'Archived: Plugin Requests' started by infopaste, Jan 24, 2014.

  1. Offline

    infopaste

    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:
    [​IMG]
    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
    1. import java.util.ArrayList;
    2. import java.util.List;
    3.  
    4. import org.bukkit.Bukkit;
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.inventory.InventoryClickEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.event.player.PlayerJoinEvent;
    14. import org.bukkit.event.player.PlayerQuitEvent;
    15. import org.bukkit.inventory.ItemStack;
    16. import org.bukkit.inventory.PlayerInventory;
    17. import org.bukkit.inventory.meta.ItemMeta;
    18. import org.bukkit.plugin.java.JavaPlugin;
    19.  
    20. public class Main extends JavaPlugin implements Listener {
    21.  
    22. //Register plugins
    23. public void onEnable() {
    24. getServer().getPluginManager().registerEvents(this, this);
    25. }
    26.  
    27. //List for hiding players
    28. ArrayList<String> players = new ArrayList<String>();
    29.  
    30. public void onInventoryClick(InventoryClickEvent event) {
    31. event.setCancelled(true);
    32. }
    33.  
    34. //Removing player from list
    35. public void onQuitEvent(PlayerQuitEvent event) {
    36. Player player = event.getPlayer();
    37. players.remove(player.getName());
    38. }
    39.  
    40. //Adding people to the list and giving them spawn items
    41. @EventHandler
    42. public void onPlayerJoin(PlayerJoinEvent event) {
    43.  
    44. Player player = event.getPlayer();
    45.  
    46. players.add(player.getName());
    47.  
    48. ItemStack compass = new ItemStack(Material.COMPASS);
    49. ItemMeta compassMeta = (ItemMeta) compass.getItemMeta();
    50. compassMeta.setDisplayName(ChatColor.GOLD + "Quick Tranist");
    51. List<String> compassList = new ArrayList<String>();
    52. compassList.add(ChatColor.GRAY + "Right click to open meanu");
    53. compassMeta.setLore(compassList);
    54. compass.setItemMeta(compassMeta);
    55.  
    56. ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);
    57. ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();
    58. enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");
    59. List<String> enableList = new ArrayList<String>();
    60. enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");
    61. enableMeta.setLore(enableList);
    62. enable.setItemMeta(enableMeta);
    63.  
    64. PlayerInventory inv = player.getInventory();
    65.  
    66. inv.setItem(9, enable);
    67.  
    68. if(player.hasPlayedBefore() == false) {
    69. inv.setItem(9, enable);
    70. inv.setItem(1, compass);
    71. }
    72.  
    73. }
    74.  
    75. //Visibility Dye
    76. @EventHandler
    77. public void onPlayerClickEvent(PlayerInteractEvent event) {
    78.  
    79. Player player = event.getPlayer();
    80.  
    81. ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);
    82. ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();
    83. enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");
    84. List<String> enableList = new ArrayList<String>();
    85. enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");
    86. enableMeta.setLore(enableList);
    87. enable.setItemMeta(enableMeta);
    88.  
    89. ItemStack disable = new ItemStack(Material.INK_SACK, 1, (short) 8);;
    90. ItemMeta disableMeta = (ItemMeta) disable.getItemMeta();
    91. disableMeta.setDisplayName(ChatColor.RED + "Players >> Disabled");
    92. List<String> disableList = new ArrayList<String>();
    93. disableList.add(ChatColor.WHITE + "Right click to enable player visability");
    94. disableMeta.setLore(disableList);
    95. disable.setItemMeta(disableMeta);
    96.  
    97. if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Players >> Enabled")){
    98. if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){
    99. if(!this.players.contains(event.getPlayer().getName())){
    100. for(Player targetPlayers : Bukkit.getOnlinePlayers()){
    101. if(player.canSee(targetPlayers)){
    102. player.hidePlayer(targetPlayers);
    103. } else{
    104. event.setCancelled(true);
    105. }
    106. this.players.add(player.getName());
    107. }
    108. player.getInventory().removeItem(enable);
    109. player.setItemInHand(disable);
    110. player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.GREEN + "On");
    111. }
    112. }
    113. }
    114. if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Players >> Disabled")){
    115. if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){
    116. for(Player targetPlayers : Bukkit.getOnlinePlayers()){
    117. if(player.canSee(targetPlayers)){
    118. event.setCancelled(true);
    119. } else {
    120. player.showPlayer(targetPlayers);
    121. }
    122. this.players.remove(player.getName());
    123. }
    124. player.getInventory().removeItem(disable);
    125. player.setItemInHand(enable);
    126. player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.RED + "Off");
    127. }
    128. }
    129. }
    130.  
    131. }


    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.
     
  2. Offline

    Alshain01

    If your after coding experience you would be better off in the Plugin Development forum asking for assistance on finishing it yourself.
     
  3. Offline

    ThijsRay

    Code:java
    1.  
    2. import java.util.ArrayList;
    3. import java.util.List;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Material;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.inventory.InventoryClickEvent;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14. import org.bukkit.event.player.PlayerJoinEvent;
    15. import org.bukkit.event.player.PlayerQuitEvent;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.inventory.PlayerInventory;
    18. import org.bukkit.inventory.meta.ItemMeta;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20.  
    21. public class Main extends JavaPlugin implements Listener {
    22.  
    23. //Register plugins
    24. public void onEnable() {
    25. getServer().getPluginManager().registerEvents(this, this);
    26. }
    27.  
    28. //List for hiding players
    29. ArrayList<String> players = new ArrayList<String>();
    30.  
    31. @EventHandler
    32. public void onInventoryClick(InventoryClickEvent event) {
    33. event.setCancelled(true);
    34. }
    35.  
    36. //Removing player from list
    37. @EventHandler
    38. public void onQuitEvent(PlayerQuitEvent event) {
    39. Player player = event.getPlayer();
    40. players.remove(player.getName());
    41. }
    42.  
    43. //Adding people to the list and giving them spawn items
    44. @EventHandler
    45. public void onPlayerJoin(PlayerJoinEvent event) {
    46.  
    47. Player player = event.getPlayer();
    48.  
    49. players.add(player.getName());
    50.  
    51. ItemStack compass = new ItemStack(Material.COMPASS);
    52. ItemMeta compassMeta = (ItemMeta) compass.getItemMeta();
    53. compassMeta.setDisplayName(ChatColor.GOLD + "Quick Tranist");
    54. List<String> compassList = new ArrayList<String>();
    55. compassList.add(ChatColor.GRAY + "Right click to open meanu");
    56. compassMeta.setLore(compassList);
    57. compass.setItemMeta(compassMeta);
    58.  
    59. ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);
    60. ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();
    61. enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");
    62. List<String> enableList = new ArrayList<String>();
    63. enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");
    64. enableMeta.setLore(enableList);
    65. enable.setItemMeta(enableMeta);
    66.  
    67. PlayerInventory inv = player.getInventory();
    68.  
    69. inv.setItem(8, enable);
    70.  
    71. if(player.hasPlayedBefore() == false) {
    72. inv.setItem(8, enable);
    73. inv.setItem(1, compass);
    74. }
    75.  
    76. }
    77.  
    78. //Visibility Dye
    79. @EventHandler
    80. public void onPlayerClickEvent(PlayerInteractEvent event) {
    81.  
    82. Player player = event.getPlayer();
    83.  
    84. ItemStack enable = new ItemStack(Material.INK_SACK, 1, (short) 10);
    85. ItemMeta enableMeta = (ItemMeta) enable.getItemMeta();
    86. enableMeta.setDisplayName(ChatColor.GREEN + "Players >> Enabled");
    87. List<String> enableList = new ArrayList<String>();
    88. enableList.add(ChatColor.WHITE + "Right click to enable to disable player visability");
    89. enableMeta.setLore(enableList);
    90. enable.setItemMeta(enableMeta);
    91.  
    92. ItemStack disable = new ItemStack(Material.INK_SACK, 1, (short) 8);;
    93. ItemMeta disableMeta = (ItemMeta) disable.getItemMeta();
    94. disableMeta.setDisplayName(ChatColor.RED + "Players >> Disabled");
    95. List<String> disableList = new ArrayList<String>();
    96. disableList.add(ChatColor.WHITE + "Right click to enable player visability");
    97. disableMeta.setLore(disableList);
    98. disable.setItemMeta(disableMeta);
    99.  
    100. if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Players >> Enabled")){
    101. if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){
    102. if(!this.players.contains(event.getPlayer().getName())){
    103. for(Player targetPlayers : Bukkit.getOnlinePlayers()){
    104. if(player.canSee(targetPlayers)){
    105. player.hidePlayer(targetPlayers);
    106. } else{
    107. event.setCancelled(true);
    108. }
    109. this.players.add(player.getName());
    110. }
    111. player.getInventory().removeItem(enable);
    112. player.setItemInHand(disable);
    113. player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.GREEN + "On");
    114. }
    115. }
    116. }else
    117. if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Players >> Disabled")){
    118. if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)){
    119. for(Player targetPlayers : Bukkit.getOnlinePlayers()){
    120. if(player.canSee(targetPlayers)){
    121. event.setCancelled(true);
    122. } else {
    123. player.showPlayer(targetPlayers);
    124. }
    125. this.players.remove(player.getName());
    126. }
    127. player.getInventory().removeItem(disable);
    128. player.setItemInHand(enable);
    129. player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Visibility" + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GRAY + "You have toggled player visibility: " + ChatColor.RED + "Off");
    130. }
    131. }
    132. }
    133.  
    134. }


    This works for me.
    - Added @EventHandler
    - Changed slot 9 to slot 8
    - Changed if(){} if(){} to an if(){ }else if(){}
     
  4. Offline

    infopaste


    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.
     
  5. Offline

    ThijsRay

    Well, it isn't working for me before a reload. It works after a reload. Looking into that.
     
  6. Offline

    L33m4n123


    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
     
  7. Offline

    infopaste


    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.
     
    Last edited by a moderator: Jun 6, 2016
  8. Offline

    infopaste

  9. Offline

    hubeb

    infopaste Here is a library that should be able to help you out.
    Code:java
    1. //Name this file McdLib
    2. import java.util.ArrayList;
    3.  
    4. import org.bukkit.Bukkit;
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.inventory.ItemStack;
    9. import org.bukkit.inventory.meta.ItemMeta;
    10.  
    11. public class McdLib {
    12. public static boolean isHidden = false;
    13. /*
    14.   public void onJoin(PlayerJoinEvent e){
    15.   Player p = (Player)e.getPlayer();
    16.   McdLib.showPlayers(p);
    17.   }
    18.   */
    19.  
    20. public static void showPlayers(Player pl){
    21. for(Player p : Bukkit.getOnlinePlayers()){
    22. pl.showPlayer(p);
    23. }
    24. resetDye(pl);
    25. }
    26. /*
    27.   public void onClick(PlayerInteractEvent e){
    28.   Player p = (Player)e.getPlayer();
    29.   if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR){
    30.   if(McdLib.isHidden == false){
    31.   McdLib.hidePlayers(p);
    32.   McdLib.isHidden = true;
    33.   }else{
    34.   McdLib.showPlayers(p);
    35.   McdLib.isHidden = false;
    36.   }
    37.   */
    38.  
    39. public static void hidePlayers(Player pl){
    40. for(Player p: Bukkit.getOnlinePlayers()){
    41. pl.hidePlayer(p);
    42. }
    43. handleDye(pl);
    44. changeDyeHidden(pl);
    45. }
    46. public static void handleDye(Player p){
    47. p.getInventory().remove(Material.INK_SACK);
    48. }
    49. public static void resetDye(Player p){
    50. //Change Dye Color to Green.
    51. ArrayList<String> lr = new ArrayList<String>();
    52. ItemStack gDye = new ItemStack(Material.INK_SACK,1,(short)10);
    53. ItemMeta gDyeM = gDye.getItemMeta();
    54. lr.add(ChatColor.GRAY+"Enable and Disable Player Visibility.");
    55. gDyeM.setLore(lr);
    56. gDyeM.setDisplayName(ChatColor.GREEN+"Players -> Enabled");
    57. gDye.setItemMeta(gDyeM);
    58. p.getInventory().addItem(gDye);
    59. }
    60. public static void changeDyeHidden(Player p){
    61. //Change Dye Color to Gray.
    62. ArrayList<String> lr = new ArrayList<String>();
    63. ItemStack gDye = new ItemStack(Material.INK_SACK,1,(short)8);
    64. ItemMeta gDyeM = gDye.getItemMeta();
    65. lr.add(ChatColor.GRAY+"Enable and Disable Player Visibility.");
    66. gDyeM.setLore(lr);
    67. gDyeM.setDisplayName(ChatColor.GREEN+"Players -> "+ChatColor.RED+"DISABLED");
    68. gDye.setItemMeta(gDyeM);
    69. p.getInventory().addItem(gDye);
    70. }
    71. }

    http://pastebin.com/XtDsz9dm
     

Share This Page