Solved BlockBreakEvent oak/spruce/jungle logs

Discussion in 'Plugin Development' started by Kassestral, Jun 5, 2014.

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

    Kassestral

    It cant seem to tell when an oak/spruce/jungle log is broken, any ideas why not?
    There are no console errors

    Code:java
    1. package com.kassestral.plugins.ilevel.skills;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.block.Block;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.BlockBreakEvent;
    9.  
    10. import com.kassestral.plugins.ilevel.Main;
    11. import com.kassestral.plugins.ilevel.Processor;
    12.  
    13. public class Woodcutting implements Listener{
    14.  
    15. private static Main plugin;
    16. public Woodcutting(Main plugin){
    17. Woodcutting.plugin = plugin;
    18. }
    19.  
    20. @SuppressWarnings("deprecation")
    21. @EventHandler
    22. public void onChopTree(BlockBreakEvent e){
    23.  
    24.  
    25. Block log = e.getBlock();
    26. Player p = e.getPlayer();
    27. String level = "Woodcutting";
    28.  
    29. //Oak Log
    30. if(log.equals(Material.LOG) && log.getData() == (byte)0){
    31. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    32. p.sendMessage(level);
    33. }
    34. if(log.equals(Material.LOG) && log.getData() == (byte)4){
    35. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    36. p.sendMessage(level);
    37. }
    38. if(log.equals(Material.LOG) && log.getData() == (byte)8){
    39. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    40. p.sendMessage(level);
    41. }
    42.  
    43. //Spruce Log
    44. if(log.equals(Material.LOG) && log.getData() == (byte)1){
    45. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    46. }
    47. if(log.equals(Material.LOG) && log.getData() == (byte)5){
    48. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    49. }
    50. if(log.equals(Material.LOG) && log.getData() == (byte)9){
    51. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    52. }
    53.  
    54. //Jungle Log
    55. if(log.equals(Material.LOG) && log.getData() == (byte)3){
    56. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    57. }
    58. if(log.equals(Material.LOG) && log.getData() == (byte)6){
    59. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    60. }
    61. if(log.equals(Material.LOG) && log.getData() == (byte)10){
    62. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    63. }
    64. }
    65. }
     
  2. Offline

    Gater12

  3. Offline

    fireblast709

    Kassestral eew static instance :p. Have you debugged the block?
     
  4. System.out.println("Put in some debug code");
     
  5. Offline

    Kassestral

    Gater12 fireblast709 AdamQpzm
    I debugged it by sending players the String "woodcutting' just so I could tell if it was picking up the block being broke, it registers the blockbreakevent but not if the block is a wood log block (oak/spruce/jungle)
     
  6. Offline

    fireblast709

    Kassestral second look at the code, you are comparing a Block with Material xD. Compare log.getType() == Material.LOG
     
  7. Offline

    Kassestral

    fireblast709
    I tried to change it to a material originally
    Code:java
    1. Block log = e.getBlock();

    to
    Code:java
    1. Material log = e.getBlock().getType();

    but it comes up with this error on this line
    Code:java
    1. log.getData() == (byte)0);

    the error is
    Code:java
    1. Incompatible operand types Class<capture#1-of ? extends MaterialData> and byte
     
  8. Offline

    Deleted user

    Kassestral
    Can you post the whole code if you change it to Material?
     
  9. Offline

    Kassestral

    Code:java
    1. package com.kassestral.plugins.ilevel.skills;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.block.Block;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.BlockBreakEvent;
    9.  
    10. import com.kassestral.plugins.ilevel.Main;
    11. import com.kassestral.plugins.ilevel.Processor;
    12.  
    13. public class Woodcutting implements Listener{
    14.  
    15. private static Main plugin;
    16. public Woodcutting(Main plugin){
    17. Woodcutting.plugin = plugin;
    18. }
    19.  
    20. @SuppressWarnings("deprecation")
    21. @EventHandler
    22. public void onChopTree(BlockBreakEvent e){
    23.  
    24.  
    25. Material log = e.getBlock().getType();
    26. Player p = e.getPlayer();
    27. String level = "Woodcutting";
    28.  
    29. //Oak Log
    30. if(log.equals(Material.LOG) && log.getData() == (byte)0){
    31. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    32. p.sendMessage(level);
    33. }
    34. if(log.equals(Material.LOG) && log.getData() == (byte)4){
    35. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    36. p.sendMessage(level);
    37. }
    38. if(log.equals(Material.LOG) && log.getData() == (byte)8){
    39. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.oak"));
    40. p.sendMessage(level);
    41. }
    42.  
    43. //Spruce Log
    44. if(log.equals(Material.LOG) && log.getData() == (byte)1){
    45. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    46. }
    47. if(log.equals(Material.LOG) && log.getData() == (byte)5){
    48. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    49. }
    50. if(log.equals(Material.LOG) && log.getData() == (byte)9){
    51. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.spruce"));
    52. }
    53.  
    54. //Jungle Log
    55. if(log.equals(Material.LOG) && log.getData() == (byte)3){
    56. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    57. }
    58. if(log.equals(Material.LOG) && log.getData() == (byte)6){
    59. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    60. }
    61. if(log.equals(Material.LOG) && log.getData() == (byte)10){
    62. Processor.addXP(p, level, plugin.getConfig().getInt("Woodcutting.jungle"));
    63. }
    64. }
    65. }

    zombiekiller753
     
  10. Offline

    Deleted user

    Kassestral
    So, what you need is

    Block log = e.getBlock()

    then, do

    if (log.getType().equals(Material.LOG))
     
    Kassestral likes this.
Thread Status:
Not open for further replies.

Share This Page