Signs resetting after reload

Discussion in 'Plugin Development' started by mattibijnens, Jan 26, 2014.

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

    mattibijnens

    So I am new to coding, I made a plugin where you get a Menu and you could do various things. Everything is working but when I reload and you right click on the signs they don't work anymore.

    Code:

    Code:java
    1. package me.Matti.YTRater;
    2.  
    3. import java.util.Arrays;
    4. import java.util.HashMap;
    5. import java.util.List;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.Location;
    10. import org.bukkit.Material;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.event.EventHandler;
    15. import org.bukkit.event.Listener;
    16. import org.bukkit.event.block.SignChangeEvent;
    17. import org.bukkit.event.inventory.InventoryClickEvent;
    18. import org.bukkit.event.player.PlayerInteractEvent;
    19. import org.bukkit.inventory.Inventory;
    20. import org.bukkit.inventory.ItemStack;
    21. import org.bukkit.inventory.meta.ItemMeta;
    22. import org.bukkit.plugin.java.JavaPlugin;
    23.  
    24. public class Cinv extends JavaPlugin implements Listener {
    25.  
    26. public final HashMap<Location, String> signs = new HashMap<Location, String>();
    27. public static Inventory testInventory;
    28.  
    29. public void onEnable() {
    30. testInventory = Bukkit.createInventory(null, 9, "PremiumShop");
    31. getServer().getPluginManager().registerEvents(this, this);
    32.  
    33. }
    34.  
    35. public ItemStack setMeta(ItemStack material, String name, List<String> lore) {
    36. if (((material == null) || material.getType() == Material.AIR)
    37. || ((name == null) && lore == null))
    38. return null;
    39. ItemMeta im = material.getItemMeta();
    40. if (name != null)
    41. im.setDisplayName(name);
    42. if (lore != null)
    43. im.setLore(lore);
    44. material.setItemMeta(im);
    45. return material;
    46. }
    47.  
    48. ItemStack newItem = setMeta(new ItemStack(Material.DIAMOND), ChatColor.RED
    49. + "Clear Inventory",
    50. Arrays.asList("Are you sure!?", "Your armor wil also get deleted!"));
    51. ItemStack Pot = setMeta(new ItemStack(Material.POISONOUS_POTATO),
    52. ChatColor.RED + "Kill yourself!",
    53. Arrays.asList("Goodbye Cruel world!"));
    54. ItemStack Spawn = setMeta(new ItemStack(Material.BOOKSHELF), ChatColor.RED
    55. + "Teleport to spawn",
    56. Arrays.asList("You dont need an explanation, do you?"));
    57.  
    58. public boolean onCommand(CommandSender sender, Command command,
    59. String label, String[] args) {
    60. if (label.equalsIgnoreCase("Menu")) {
    61. if (sender instanceof Player) {
    62. ((Player) sender).openInventory(testInventory);
    63. testInventory.clear();
    64. testInventory.addItem(Pot);
    65. testInventory.addItem(newItem);
    66. testInventory.addItem(Spawn);
    67. }
    68. }
    69. return false;
    70. }
    71.  
    72. @EventHandler
    73. public void onSignChange(SignChangeEvent event) {
    74. if (event.getLine(0).equalsIgnoreCase(
    75. ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + "[Menu]")) {
    76. signs.put(event.getBlock().getLocation(), event.getPlayer()
    77. .getName());
    78.  
    79. }
    80.  
    81. }
    82.  
    83. @EventHandler
    84. public void onPlayerInteract(PlayerInteractEvent event) {
    85. Player player = event.getPlayer();
    86. try {
    87. if (signs.containsKey(event.getClickedBlock().getLocation())) {
    88. player.openInventory(testInventory);
    89. testInventory.clear();
    90. testInventory.addItem(Pot);
    91. testInventory.addItem(newItem);
    92. testInventory.addItem(Spawn);
    93. }
    94. } catch (Exception exc) {
    95. }
    96. }
    97.  
    98. @SuppressWarnings("deprecation")
    99. @EventHandler
    100. public void onInventoryClick(InventoryClickEvent event) {
    101. if (event.getInventory().getTitle() == "PremiumShop") {
    102. if (event.getCurrentItem().getType() == Material.DIAMOND) {
    103. event.setCancelled(true);
    104. event.getWhoClicked().getInventory();
    105. Player player = (Player) event.getWhoClicked();
    106. player.getInventory().clear();
    107. player.sendMessage(ChatColor.RED + "Inventory Cleared!");
    108. }
    109.  
    110. }
    111. if (event.getInventory().getTitle() == "PremiumShop") {
    112. if (event.getCurrentItem().getType() == Material.BOOKSHELF) {
    113. event.setCancelled(true);
    114. event.getWhoClicked().getInventory();
    115. Player player = (Player) event.getWhoClicked();
    116. player.sendMessage(ChatColor.AQUA + "Teleported to spawn!");
    117. player.teleport(player.getWorld().getSpawnLocation());
    118. }
    119.  
    120. }
    121.  
    122. if (event.getInventory().getTitle() == "PremiumShop") {
    123. if (event.getCurrentItem().getType() == Material.POISONOUS_POTATO) {
    124. event.setCancelled(true);
    125. Player player = (Player) event.getWhoClicked();
    126. Bukkit.broadcastMessage(ChatColor.AQUA + player.getName()
    127. + ChatColor.RED + "" + ChatColor.BOLD
    128. + " committed suicide!");
    129. player.setHealth(0);
    130. }
    131.  
    132. }
    133. }
    134.  
    135. }
    136.  
     
  2. mattibijnens
    HashMaps reset over reloads and restarts. You'll probably want to save it somewhere, such as an yml file.
     
  3. Offline

    mattibijnens

    Oh ok, I will check that out

    I cant figure out how to do that :S Does someone know a Tutorial for that?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  4. Offline

    dup9let

    First onEnable , create custom .yml file where you will save your data, and load a saved data...
    Then , onDisable , do a hashmap save.
     
  5. Offline

    mattibijnens

    dup9let I am new to bukkit so I dont know how to do that :S
     
  6. Offline

    L33m4n123

  7. Offline

    mattibijnens

Thread Status:
Not open for further replies.

Share This Page