onPlayerInteract Help

Discussion in 'Plugin Development' started by maxxb123, Feb 24, 2014.

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

    maxxb123

    I'm not sure what's wrong with this plugin, any help?
    Code:java
    1. package me.maxxb123.bandage;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.player.PlayerInteractEvent;
    8.  
    9. public class Bandage implements Listener {
    10.  
    11. @EventHandler
    12. public void onPlayerInteract(PlayerInteractEvent event) {
    13. Player p = event.getPlayer();
    14. if(event.getClickedBlock().getType() == Material.PAPER) {
    15. p.setHealth(+8);
    16. p.sendMessage("You've been healed by 4 hearts!");
    17. } else return;
    18.  
    19. }
    20. }
     
  2. Offline

    MrInspector

    Well are you registering events?

    What do you mean by wrong though?
     
  3. Offline

    maxxb123

  4. Offline

    Buizelfan2

    Try something like
    Code:java
    1. if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK && p.getItemInHand().getType() == Material.PAPER) {
    2. p.setHealth(+8);
    3. p.sendMessage("You've been healed by 4 hearts!");
    4. }
     
  5. Offline

    The Fancy Whale

    Yes for one thing I never see you registering the events.
    And also I would do this:
    Code:java
    1. action == Action.RIGHT_CLICK_BLOCK || action == Action.RIGHT_CLICK_AIR) { //If the player right clicks
    2. if(player.getItemInHand().getType().equals(Material.PAPER){
    3. //do code here
    4. }}
     
  6. Offline

    maxxb123

    The Fancy Whale

    I feel like an idiot saying this, but how do I register events...?
     
  7. Offline

    The Fancy Whale

  8. you can do:
    Code:java
    1. public void onEnable{
    2. this.getServer.GetPluginManager.RegisterEvents{this,this}
    3. }
     
  9. Offline

    maxxb123

    Okay, now I have:

    Code:java
    1. package me.maxxb123.bandage;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.block.Action;
    8. import org.bukkit.event.player.PlayerInteractEvent;
    9.  
    10. public class Bandage implements Listener {
    11.  
    12. public void onEnable() {
    13. this.getServer().getPluginManager().registerEvents(this, this);
    14. }
    15.  
    16. @EventHandler
    17. public void onPlayerInteract(PlayerInteractEvent event) {
    18. Player p = event.getPlayer();
    19. if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK && p.getItemInHand().getType() == Material.PAPER) {
    20. p.setHealth(+8);
    21. p.sendMessage("You've been healed by 4 hearts!");
    22. }
    23.  
    24. }
    25. }


    It's still not working...

    Any help with this?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  10. Offline

    qlimax5000

    maxxb123
    You never add the health. Try:
    Code:java
    1. player.setHealth(((Damageable) player).getHealth() + 8);
     
  11. Offline

    mattibijnens

    Code:java
    1. //Change
    2.  
    3. public class Bandage implements Listener
    4.  
    5. //To
    6.  
    7. public class Bandage extends JavaPlugin implements Listener
     
Thread Status:
Not open for further replies.

Share This Page