Solved Trying To Block Plugin Basics

Discussion in 'Plugin Development' started by CompleteClient, Oct 28, 2013.

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

    CompleteClient

    I need help with this desperately. I have tried to look everywhere, but still no answers.
    Here is the code:

    Code:java
    1. public static Material[] blacklist = {Material.BEDROCK, Material.TNT};
    2.  
    3. @EventHandler(priority = EventPriority.HIGHEST)
    4. public void onBlockPlace(CommandSender sender, BlockPlaceEvent event){
    5. Player player = (Player) sender;
    6. Material block = event.getBlockPlaced().getType();
    7. while (1 >= 0){
    8. for (Material blocked : blacklist){
    9. if (blocked == block){
    10. if (!player.isOp()){
    11. event.getBlock().setType(Material.AIR);
    12. event.setCancelled(true);
    13. player.sendMessage("I have placed Bedrock.");
    14. }
    15. }
    16. else{
    17. player.sendMessage("I have placed Good Blocks.");
    18. }
    19. }
    20. }
    21. }
     
  2. Offline

    Jake6177

    What's the problem? I see code. What do you need help with?
     
  3. Offline

    TheUpdater

    CommandSender sender???
     
  4. Offline

    CompleteClient

    I am still able to place TNT and Bedrock. I am trying block it.

    This is just to make the user send a message once they try to place that block.
     
  5. Offline

    Jake6177

    A listener is not sending a command..... You'll want something along the lines of:

    Code:java
    1.  
    2. @EventHandler
    3. public void onBlockPlace(BlockPlaceEvent e) {
    4. Player player = e.getPlayer();
    5. Material block = e.getBlockPlaced().getType();
    6. ...rest of your code
    7. }
    8.  
     
  6. Offline

    TheUpdater

    aa ok then i know

    BlockPlaceEvent event

    if(event.gettype() == Material.TNT)
    event.setcanceled(true);

    is that what you need all you want is to block.. blocks?
     
  7. Offline

    The_Doctor_123

    CompleteClient
    Ummm... Bukkit does not call event methods that have more than the event as arguments.

    The effort in putting code that worked somewhere else is nice and all, but you need to know how this stuff works before you start fooling around with it. It is evident that you don't know Java, so I'm going to have to say the thing I say every day to people again.. It would be highly beneficial if you learned Java before trying to learn a 3rd party API, like Bukkit. If you try to learn Java this way, it's just going to be tougher.
     
    Jake6177 likes this.
  8. Offline

    CompleteClient


    It is still not working. I am unsure, as I have not really messed with manipulation of blocks before. Here is what I have now:

    Code:java
    1. Player player = event.getPlayer();
    2. Material block = event.getBlockPlaced().getType();
    3. for (Material blocked : blacklist){
    4. if (blocked == block){
    5. if (!player.isOp()){
    6. event.getBlock().setType(Material.AIR);
    7. event.setCancelled(true);
    8. player.sendMessage("I have placed Bedrock.");
    9. }
     
  9. Offline

    sgavster

  10. Offline

    CompleteClient

    sgavster I believe so. Here is the whole code for it:

    Code:java
    1. package me.Jordan.tester;
    2.  
    3. import java.util.logging.Logger;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Location;
    7. import org.bukkit.Material;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.EventPriority;
    13. import org.bukkit.event.block.BlockPlaceEvent;
    14. import org.bukkit.plugin.PluginDescriptionFile;
    15. import org.bukkit.plugin.java.JavaPlugin;
    16.  
    17. public class Youtube extends JavaPlugin{
    18.  
    19. public final Logger logger = Logger.getLogger("Minecraft");
    20.  
    21. public static Youtube plugin;
    22. public static Material[] blacklist = {Material.BEDROCK, Material.TNT};
    23.  
    24. public void onDisable() {
    25. PluginDescriptionFile pdfFile = this.getDescription();
    26. this.logger.info(pdfFile.getName() + " Has Been Disabled!");
    27. }
    28.  
    29. public void onEnable() {
    30. PluginDescriptionFile pdfFile = this.getDescription();
    31. this.logger.info(pdfFile.getName() + " Version: " + pdfFile.getVersion() + " Has Been Enabled!");
    32. }
    33.  
    34. @EventHandler(priority = EventPriority.HIGHEST)
    35. public void onBlockPlace(BlockPlaceEvent event){
    36. Player player = event.getPlayer();
    37. Material block = event.getBlockPlaced().getType();
    38. for (Material blocked : blacklist){
    39. if (blocked == block){
    40. if (!player.isOp()){
    41. event.getBlock().setType(Material.AIR);
    42. event.setCancelled(true);
    43. player.sendMessage("I have placed Bedrock.");
    44. }
    45. }
    46. else{
    47. player.sendMessage("I have placed Good Blocks.");
    48. }
    49. }
    50. }
     
  11. Offline

    sgavster

    CompleteClient Nope, do this onEnable:
    Code:java
    1. Bukkit.getPluginManager().registerEvents(this, this);
     
  12. Offline

    CompleteClient

    sgavster , it is now saying that I need to cast an arguement for a listener.
     
  13. Offline

    sgavster

    CompleteClient make your class implements Listener
    Code:java
    1. public class Youtube extends JavaPlugin implements Listener{
     
  14. Offline

    CompleteClient

    sgavster, thanks! I figured that part out just before you mentioned it :p
     
Thread Status:
Not open for further replies.

Share This Page