Tool Upgrader won't work

Discussion in 'Plugin Development' started by 17nhammond, Jul 27, 2013.

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

    17nhammond

    This is main java:

    package com.brendannoble.toolupgrader;

    import java.util.logging.Logger;

    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;

    import com.brendannoble.toolupgrader.Main;


    public class Main extends JavaPlugin
    {

    public final Logger logger = Logger.getLogger("Minecraft");
    public static Main plugin;

    @Override
    public void onEnable()
    {

    getServer().getPluginManager().registerEvents(new EventListener(), this);
    PluginDescriptionFile pdfFile = this.getDescription();
    logger.info(pdfFile.getName()+ " Version: " + pdfFile.getVersion()+ " Has Been Enabled!");
    System.out.println("[ToolUpgrader] Created by: " + pdfFile.getAuthors());

    }

    @Override
    public void onDisable()
    {
    PluginDescriptionFile pdfFile = this.getDescription();
    logger.info(pdfFile.getName() + " Has Been Disabled!");
    }


    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
    Player p = (Player) sender;

    boolean returnValue = false;

    if(commandLabel.equalsIgnoreCase("tuversion"))
    {

    PluginDescriptionFile pdfFile = this.getDescription();
    p.sendMessage(ChatColor.GOLD + "[ToolUpgrader] " + "Version: " + pdfFile.getVersion());

    returnValue = true;
    }

    return returnValue;

    }
    }



    This is event listener:

    package com.brendannoble.toolupgrader;

    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.inventory.ItemStack;


    public class EventListener implements Listener
    {

    public int woodPickUse = 0;
    public int stonePickUse = 0;
    public int ironPickUse = 0;
    public int goldPickUse = 0;
    public int diamondPickUse = 0;

    @EventHandler(priority = EventPriority.NORMAL) public void onPickaxeUse(BlockBreakEvent e)
    {

    Player p = e.getPlayer();
    ItemStack is = p.getItemInHand();

    // Wood Pick Upgrade
    if(is.equals(new ItemStack(Material.WOOD_PICKAXE)))
    {
    woodPickUse++;

    if(woodPickUse==100)
    {
    ItemStack stonePick = new ItemStack(Material.STONE_PICKAXE);
    p.getInventory().addItem(stonePick);
    woodPickUse = 0;
    }

    }

    // Stone Pick Upgrade
    else if(is.equals(Material.STONE_PICKAXE))
    {
    stonePickUse++;

    if(stonePickUse==150)
    {
    ItemStack ironPick = new ItemStack(Material.IRON_PICKAXE);
    p.getInventory().addItem(ironPick);
    stonePickUse = 0;
    }
    }

    // Iron Pick Upgrade
    else if(is.equals(Material.IRON_PICKAXE))
    {
    ironPickUse++;

    if(ironPickUse==200)
    {
    ItemStack goldPick = new ItemStack(new ItemStack(Material.GOLD_PICKAXE));
    p.getInventory().addItem(goldPick);
    ironPickUse = 0;
    }


    }

    //Gold Pick Upgrade
    else if(is.equals(Material.GOLD_PICKAXE))
    {
    goldPickUse++;


    if(goldPickUse==33)
    {
    ItemStack diamondPick = new ItemStack(Material.DIAMOND_PICKAXE);
    p.getInventory().addItem(diamondPick);
    diamondPickUse = 0;

    }

    }

    }
    }
     
  2. Offline

    metalhedd

    I would take a look if this were easier to read, would you mind repasting it into pastebin.com or something similar, with java syntax highlighting and proper indentation?
     
  3. Offline

    17nhammond

    Okay here ya go


    Code:java
    1.  
    2. This is main java:
    3.  
    4. package com.brendannoble.toolupgrader;
    5.  
    6. import java.util.logging.Logger;
    7.  
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.PluginDescriptionFile;
    13. import org.bukkit.plugin.java.JavaPlugin;
    14.  
    15. import com.brendannoble.toolupgrader.Main;
    16.  
    17.  
    18. public class Main extends JavaPlugin
    19. {
    20.  
    21. public final Logger logger = Logger.getLogger("Minecraft");
    22. public static Main plugin;
    23.  
    24. @Override
    25. public void onEnable()
    26. {
    27.  
    28. getServer().getPluginManager().registerEvents(new EventListener(), this);
    29. PluginDescriptionFile pdfFile = this.getDescription();
    30. logger.info(pdfFile.getName()+ " Version: " + pdfFile.getVersion()+ " Has Been Enabled!");
    31. System.out.println("[ToolUpgrader] Created by: " + pdfFile.getAuthors());
    32.  
    33. }
    34.  
    35. @Override
    36. public void onDisable()
    37. {
    38. PluginDescriptionFile pdfFile = this.getDescription();
    39. logger.info(pdfFile.getName() + " Has Been Disabled!");
    40. }
    41.  
    42.  
    43. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    44. {
    45. Player p = (Player) sender;
    46.  
    47. boolean returnValue = false;
    48.  
    49. if(commandLabel.equalsIgnoreCase("tuversion"))
    50. {
    51.  
    52. PluginDescriptionFile pdfFile = this.getDescription();
    53. p.sendMessage(ChatColor.GOLD + "[ToolUpgrader] " + "Version: " + pdfFile.getVersion());
    54.  
    55. returnValue = true;
    56. }
    57.  
    58. return returnValue;
    59.  
    60. }
    61. }
    62.  
    63.  
    64.  
    65. This is event listener:
    66.  
    67. package com.brendannoble.toolupgrader;
    68.  
    69. import org.bukkit.Material;
    70. import org.bukkit.entity.Player;
    71. import org.bukkit.event.EventHandler;
    72. import org.bukkit.event.EventPriority;
    73. import org.bukkit.event.Listener;
    74. import org.bukkit.event.block.BlockBreakEvent;
    75. import org.bukkit.inventory.ItemStack;
    76.  
    77.  
    78. public class EventListener implements Listener
    79. {
    80.  
    81. public int woodPickUse = 0;
    82. public int stonePickUse = 0;
    83. public int ironPickUse = 0;
    84. public int goldPickUse = 0;
    85. public int diamondPickUse = 0;
    86.  
    87. @EventHandler(priority = EventPriority.NORMAL) public void onPickaxeUse(BlockBreakEvent e)
    88. {
    89.  
    90. Player p = e.getPlayer();
    91. ItemStack is = p.getItemInHand();
    92.  
    93. // Wood Pick Upgrade
    94. if(is.equals(new ItemStack(Material.WOOD_PICKAXE)))
    95. {
    96. woodPickUse++;
    97.  
    98. if(woodPickUse==100)
    99. {
    100. ItemStack stonePick = new ItemStack(Material.STONE_PICKAXE);
    101. p.getInventory().addItem(stonePick);
    102. woodPickUse = 0;
    103. }
    104.  
    105. }
    106.  
    107. // Stone Pick Upgrade
    108. else if(is.equals(Material.STONE_PICKAXE))
    109. {
    110. stonePickUse++;
    111.  
    112. if(stonePickUse==150)
    113. {
    114. ItemStack ironPick = new ItemStack(Material.IRON_PICKAXE);
    115. p.getInventory().addItem(ironPick);
    116. stonePickUse = 0;
    117. }
    118. }
    119.  
    120. // Iron Pick Upgrade
    121. else if(is.equals(Material.IRON_PICKAXE))
    122. {
    123. ironPickUse++;
    124.  
    125. if(ironPickUse==200)
    126. {
    127. ItemStack goldPick = new ItemStack(new ItemStack(Material.GOLD_PICKAXE));
    128. p.getInventory().addItem(goldPick);
    129. ironPickUse = 0;
    130. }
    131.  
    132.  
    133. }
    134.  
    135. //Gold Pick Upgrade
    136. else if(is.equals(Material.GOLD_PICKAXE))
    137. {
    138. goldPickUse++;
    139.  
    140.  
    141. if(goldPickUse==33)
    142. {
    143. ItemStack diamondPick = new ItemStack(Material.DIAMOND_PICKAXE);
    144. p.getInventory().addItem(diamondPick);
    145. diamondPickUse = 0;
    146.  
    147. }
    148.  
    149. }
    150.  
    151. }
    152.  


    65 and 2 are not part of the code metalhedd.
    Thanks!

    metalhedd Okay I did what you asked. :)

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

    metalhedd


    The first problem I see is that you do:

    if (is.equals(Material.IRON_PICKAXE))

    where 'is' is an ItemStack.. This will *ALWAYS* be false because you're comparing a Material and an ItemStack for equality. they're not even the same class. you're essentially comparing apples to oranges.

    There's another logic error in the code, which is that the counters are stored in your Listener, so instead of upgrading after a player has broken 100 stone w/ his pickaxe, you're upgrading after the 100th stone is broken by any player, Every player is contributing to the same counter and only the one who breaks lucky stone #100 will get the upgrade. you need a counter for each TOOL. you should probably store it in the ItemMeta itself.
     
  5. Offline

    inventorman101

  6. Offline

    17nhammond

    Okay thank you very much!
     
Thread Status:
Not open for further replies.

Share This Page