Solved Crops (Potato and Carrot)

Discussion in 'Plugin Help/Development/Requests' started by Armandozetaxx, Nov 5, 2015.

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

    Armandozetaxx

    Everything works in my code, except it does not detect when carrots or potatoes
    are break, it throws me an error. Here is my code:

    Code:
    package com.armandozetaxx.neon.event.block;
    
    import org.bukkit.ChatColor;
    import org.bukkit.CropState;
    import org.bukkit.Material;
    import org.bukkit.NetherWartsState;
    import org.bukkit.block.Block;
    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.material.Crops;
    import org.bukkit.material.NetherWarts;
    
    public class Wheat implements Listener
    {
     
        @EventHandler(priority=EventPriority.MONITOR, ignoreCancelled=true)
     
        public void onCropBreak(BlockBreakEvent event)
        {
         
            Player player = event.getPlayer();
            Block block = event.getBlock();
            Material material = block.getType();
    
            if(material == Material.CROPS)
            {
                Crops crops = (Crops) block.getState().getData();
                if(crops.getState() == CropState.RIPE)
                {
                    player.sendMessage(ChatColor.RED + "Wheat!");
                }
            }else if(material == Material.POTATO)
            {
                Crops crops = (Crops) block.getState().getData();
                if (crops.getState().equals(CropState.RIPE))
                {
                    player.sendMessage(ChatColor.RED + "Potato!");
                }
            }else if(material == Material.CARROT)
            {
                Crops crops = (Crops) block.getState().getData();
                if (crops.getState().equals(CropState.RIPE))
                {
                    player.sendMessage(ChatColor.RED + "Carrot!");
                }
            }else if(material == Material.NETHER_WARTS)
            {
                NetherWarts crops = (NetherWarts) block.getState().getData();
                if(crops.getState() == NetherWartsState.RIPE)
                {
                    player.sendMessage(ChatColor.RED + "Netherwart!"); 
                }
            }
        }
    }
    
    Error when breaking potato or carrot:
    Code:
    [20:04:23] [Server thread/ERROR]: Could not pass event BlockBreakEvent to NeonSB v3.4
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.breakBlock(PlayerInteractManager.java:285) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.a(PlayerInteractManager.java:121) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:608) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:40) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:10) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
    Caused by: java.lang.ClassCastException: org.bukkit.material.MaterialData cannot be cast to org.bukkit.material.Crops
        at com.armandozetaxx.neon.event.block.Wheat.onBlockBreak(Wheat.java:33) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[craftbukkit.jar:git-Bukkit-62a2169]
        ... 17 more
    [20:04:27] [Server thread/ERROR]: Could not pass event BlockBreakEvent to NeonSB v3.4
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.breakBlock(PlayerInteractManager.java:285) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.a(PlayerInteractManager.java:121) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:608) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:40) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:10) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
    Caused by: java.lang.ClassCastException: org.bukkit.material.MaterialData cannot be cast to org.bukkit.material.Crops
        at com.armandozetaxx.neon.event.block.Wheat.onBlockBreak(Wheat.java:33) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[craftbukkit.jar:git-Bukkit-62a2169]
        ... 17 more
    [20:04:32] [Server thread/ERROR]: Could not pass event BlockBreakEvent to NeonSB v3.4
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-62a2169]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.breakBlock(PlayerInteractManager.java:285) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.a(PlayerInteractManager.java:121) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:608) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:40) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:10) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-62a2169]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-62a2169]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
    Caused by: java.lang.ClassCastException: org.bukkit.material.MaterialData cannot be cast to org.bukkit.material.Crops
        at com.armandozetaxx.neon.event.block.Wheat.onBlockBreak(Wheat.java:39) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[craftbukkit.jar:git-Bukkit-62a2169]
        ... 17 more
    
    Thanks in advanced, have a nice day :)
     
  2. Offline

    oceantheskatr

    This: Crops crops = (Crops) block.getState().getData(); is incorrect.

    .getData() should return a short value if I'm correct. I think if you change the code to something like this it should work. Read the errors in your IDE and try and understand them:

    short crops = block.getState().getData();
     
  3. Offline

    Armandozetaxx

    That doesen't work :/
     
Thread Status:
Not open for further replies.

Share This Page