redstone interacting with blocks doesn't seem to work for me

Discussion in 'Plugin Development' started by terrornerd, Mar 17, 2011.

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

    terrornerd

    So this is the whole block listener java file. I'm sorry if this is a dumb question as this is my second java and bukkit project. The idea of the plugin being that when a player right clicks a block it turns a fence block into a water block (this works) I also want it to be triggered by redstone.

    Code:
    package me.sman.Dam;
    
    import java.awt.JobAttributes.SidesType;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockRedstoneEvent;
    import org.bukkit.event.block.BlockRightClickEvent;
    
    public class DamBlockListener extends BlockListener {
        public static Dam plugin;
    
        public DamBlockListener(Dam instance){
            plugin = instance;
        }
        public void onBlockRightClick(BlockRightClickEvent event){
            Block block = event.getBlock();
            Player player = event.getPlayer();
            Block water = block.getRelative(0, 1, 0);
            int w = 85;
            if(block.getType() == Material.MOSSY_COBBLESTONE && plugin.enabled(player) && water.getType() == Material.FENCE){
                player.sendMessage(ChatColor.BLUE + "Dam Open.");
                w = 8;
            }else{ if(block.getType() == Material.MOSSY_COBBLESTONE && water.getType() == Material.WATER){
                w = 85;
                }
            }
            if(block.getType() == Material.MOSSY_COBBLESTONE && water.getTypeId() == 8 || block.getType() == Material.MOSSY_COBBLESTONE && water.getTypeId() == 85 || block.getType() == Material.MOSSY_COBBLESTONE && water.getTypeId() == 9){
                water.setTypeId(w);
            }
        }
    
    **this is the part that is faulty**
    
        public void onBlockRedstoneChange(BlockRedstoneEvent event){
            int x = event.getBlock().getX();
            int y = event.getBlock().getY();
            int z = event.getBlock().getZ();
            Block water = null;
            int w = 85;
            if(event.getBlock().getWorld().getBlockAt(x+1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.FENCE){
                water = event.getBlock().getWorld().getBlockAt(x+1,y+1,z);
                w = 8;
        }else{ if(event.getBlock().getWorld().getBlockAt(x+1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.WATER){
                water = event.getBlock().getWorld().getBlockAt(x+1,y+1,z);
                w = 85;
            }
            }
     
            if(event.getBlock().getWorld().getBlockAt(x-1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.FENCE){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 8;
            }else{ if(event.getBlock().getWorld().getBlockAt(x-1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.WATER){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 85;
            }
            }
     
            if(event.getBlock().getWorld().getBlockAt(x,y,z+1).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.FENCE){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 8;
            }else{ if(event.getBlock().getWorld().getBlockAt(x-1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.WATER){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 85;
            }
            }
     
            if(event.getBlock().getWorld().getBlockAt(x,y,z-1).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.FENCE){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 8;
            }else{ if(event.getBlock().getWorld().getBlockAt(x-1,y,z).getType() == Material.MOSSY_COBBLESTONE && event.getBlock().getWorld().getBlockAt(x+1,y+1,z).getType() == Material.WATER){
                water = event.getBlock().getWorld().getBlockAt(x-1,y+1,z);
                w = 85;
            }
            }
    
            if(water.getType() == Material.WATER || water.getType() == Material.FENCE){
                water.setTypeId(w);
            }
        }
    }
     
  2. Offline

    phaed

    Might want to compare your materials like so:

    water.getType().equals(Material.WATER)
     
Thread Status:
Not open for further replies.

Share This Page