Solved Send Message on BlockPlaceEvent

Discussion in 'Plugin Development' started by malikdbuseck, Aug 17, 2014.

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

    malikdbuseck

    So I want to send a message to the players when Stone is placed. Just trying to learn the different classes and what no in Java.

    my Code:
    Code:java
    1. package Dae.Spell;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.BlockPlaceEvent;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. public class spell extends JavaPlugin implements Listener {
    12. public void onEnabled() {
    13. getLogger().info("Spell Cast has been enabled");
    14.  
    15. }
    16. public void onDisable() {
    17. getLogger().info("Spell Cast has been disabled");
    18.  
    19. }
    20. @EventHandler
    21. public void Bplace(BlockPlaceEvent bpe, Player p){
    22. if(bpe.getBlockPlaced().getType().equals(Material.STONE)){
    23. bpe.getPlayer().sendMessage(ChatColor.RED + "You placed Stone!");
    24. }
    25. else{
    26. bpe.getPlayer().sendMessage(ChatColor.BLUE + "Thats not stone!");
    27.  
    28. }
    29.  
    30. }
    31.  
    32. }
    33.  
     
  2. Offline

    ElliottOlson

    You do not have to have the Player variable in the BlockPlaceEvent void. Also, you have to remember to register your events, and then it should all work wonderfully.
     
    malikdbuseck likes this.
  3. Offline

    LightMC

    Use this in your onEnable method in order to register the events. Then you need to remove the Player variable as ElliottOlson said.
    Code:
                Bukkit.getServer().getPluginManager().registerEvents(listener, plugin);
    
     
  4. Offline

    ProMCKingz

    AS ElliottOlson said,
    Make sure you have the following:
    Code:java
    1. Player player = event.getPlayer();

    Code:java
    1. Material block = event.getBlock().getType();

    Then you can simply write
    Code:java
    1. player.sendMessage("You have placed" + block);

    Also if you have it as a different calss to your main one, make sure you register the events as LightMC has given
    Hope this helps,
    Best Of Luck,
    ProMCKingz
     
  5. Your code is almost correct, however your function parameters are wrong. Here is my version:

    Code:java
    1. @EventHandler
    2. public void CheckForStone(BlockPlaceEvent e)
    3. {
    4. if (e.getBlockPlaced().getType().equals(Material.STONE))
    5. {
    6. // The block placed is stone.
    7. }
    8. else
    9. {
    10. // The block place is not stone.
    11. }
    12. }


    Then just remember to register the listeners:

    Bukkit.getServer().getPluginManager().registerEvents(this, this);
     
  6. Offline

    macboinc

    Code:java
    1. package Dae.Spell;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.BlockPlaceEvent;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. public class spell extends JavaPlugin implements Listener {
    12. public void onEnabled() {
    13. getLogger().info("Spell Cast has been enabled");
    14. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    15. }
    16. public void onDisable() {
    17. getLogger().info("Spell Cast has been disabled");
    18.  
    19. }
    20. @EventHandler
    21. public void onBlockPlace(BlockPlaceEvent bpe){
    22. if(bpe.getBlockPlaced().getType().equals(Material.STONE)){
    23. bpe.getPlayer().sendMessage(ChatColor.RED + "You placed Stone!");
    24. }
    25. else{
    26. bpe.getPlayer().sendMessage(ChatColor.BLUE + "That's not stone!");
    27.  
    28. }
    29.  
    30. }
    31.  
    32. }
    33.  
     
  7. Offline

    malikdbuseck

    Thank you everyone! Im trying to learn how to code, I have many plugin ideas but learning is the main battle!
     
  8. Offline

    Lactem

    You should mark the thread as solved.
     
  9. Offline

    malikdbuseck

    I used this and it didnt seem to work
     
  10. Offline

    ElliottOlson

    malikdbuseck It has to be onEnable not onEnabled. Other than that, it seems like it will work.
     
  11. Offline

    macboinc

    Sorry, it was a typo I made
     
Thread Status:
Not open for further replies.

Share This Page