Solved I can break blocks with my sword

Discussion in 'Plugin Development' started by JustBeast_, Jan 22, 2017.

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

    JustBeast_

    When I join my server and I put a sword in my hand I can break blocks.

    The only plugin that I have on my server is my own.
    It prevents users to place and break blocks.

    Here is the code of my plugin:
    Code:
    //          Main.java
    package com.justbeast_.test;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.justbeast_.test.commands.Hello;
    import com.justbeast_.test.events.block.BlockBreak;
    import com.justbeast_.test.events.block.BlockPlace;
    
    
    public class Main extends JavaPlugin {
    
        public void onEnable() {
           
            registerCommands();
            registerEvents();
    
        }
    
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (command.getName().equalsIgnoreCase("diamonds")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage(ChatColor.RED + "You are not a Player!");
    
                    return true;
                }
    
                Player player = (Player) sender;
                player.getInventory().addItem(new ItemStack(Material.DIAMOND, 2));
                sender.sendMessage(ChatColor.AQUA + "Diamonds!");
    
                return true;
    
            }
    
            return true;
        }
       
        public void registerCommands() {
           
            getCommand("hello").setExecutor(new Hello());
           
        }
       
        public void registerEvents() {
           
            PluginManager pm = getServer().getPluginManager();
           
            pm.registerEvents(new BlockBreak(), this);
            pm.registerEvents(new BlockPlace(), this);
           
        }
       
    }
    
    
    //    BlockBreak.java
    package com.justbeast_.test.events.block;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    
    public class BlockBreak implements Listener {
       
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
            Player player = event.getPlayer();
           
            if (player.isOp() || player.hasPermission("test.blockbreak")){
                event.setCancelled(false);
           
                } else {
                    event.setCancelled(true);
            }
           
        }
    
    }
    
    
    //   BlockPlace.java
    package com.justbeast_.test.events.block;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockPlaceEvent;
    
    public class BlockPlace implements Listener {
       
        @EventHandler
        public void onBlockPlace (BlockPlaceEvent event) {
            Player player = event.getPlayer();
           
            if (player.isOp() || player.hasPermission("test.blockplace")){
                event.setCancelled(false);
           
                } else {
                    event.setCancelled(true);
            }
           
        }
    
    }
    
    
    
    Did i do something wrong?
     
  2. Offline

    timtower Administrator Administrator Moderator

    @JustBeast_ Nope, just a minecraft feature.
    Not an issue with your code
     
  3. Offline

    Sethburster

    Is your code supposed to stop you from breaking the block? In that case have you checked if you're an op?


    Sent from my iPhone using Tapatalk
     
  4. Offline

    JustBeast_

    The minecraft feature is that you can NOT break blocks with your sword, but with my plugin I CAN break blocks with my sword.

    But i fixed it though

    Code:
    package com.justbeast_.test.events.block;
    
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.inventory.ItemStack;
    
    public class BlockBreak implements Listener {
       
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
            Player player = event.getPlayer();
            ItemStack item = player.getInventory().getItemInMainHand();
           
            if (player.isOp() || player.hasPermission("test.blockbreak")){
                if (item.getType() != Material.DIAMOND_SWORD && item.getType() != Material.WOOD_SWORD && item.getType() != Material.IRON_SWORD && item.getType() != Material.STONE_SWORD &&item.getType() != Material.GOLD_SWORD) {
                event.setCancelled(false);
                }
                } else {
                    event.setCancelled(true);
            }
           
        }
    
    }
    
    @Sethburster

    Yes, and yes

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
  5. Offline

    Sethburster

    ? With the code you just wrote, if the item is a sword you cant't break a block with it. I'm not really sure what you're trying to accomplish, do you still need help? Because you said that your plugin allows you to break blocks with your sword but your cancelling the block break event if the item they're holding is a sword?


    Also the Minecraft feature is that you cannot break blocks with your sword in Creative, Im pretty sure you can in survival unless I'm mistaken.

    Sent from my iPhone using Tapatalk
     
  6. Offline

    JustBeast_

    The purpose of my plugin was to prevent people from breaking/placing blocks, but then I got a glitch that when someone with OP or the "Test.blockbreak" permission could break blocks with a sword so I needed a quick fix.
    But now my code is solved.
     
Thread Status:
Not open for further replies.

Share This Page