package us.icebrg.hungry; import java.util.logging.Logger; import org.bukkit.block.Block; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerRespawnEvent; public class HungryPlayerListener extends PlayerListener { protected Hungry plugin; protected HungryConfiguration config; protected Logger log; public HungryPlayerListener(Hungry plugin) { this.plugin = plugin; this.log = plugin.log; } @Override /** * For our purposes, if the player is right-clicking and doing anything but eating (for * default non-edible blocks) */ public void onPlayerInteract(PlayerInteractEvent event) { switch (event.getAction()) { case RIGHT_CLICK_AIR: // The player right-clicked on the air with an item. this.plugin.handlePlayerEat(event.getPlayer(), event.getPlayer() .getItemInHand()); break; case RIGHT_CLICK_BLOCK: // The player right-clicked on a block. try { // Check if the item they are holding is edible, first... if (event.hasItem() && this.plugin.getConfig().foods.containsKey(event .getPlayer().getItemInHand().getType().name())) { // ... if it is, act as if the player ate the item this.plugin.handlePlayerEat(event.getPlayer(), event .getPlayer().getItemInHand()); return; } } catch (NullPointerException e) { // If the player placed a block, so an item was involved but is // no longer in the player's // hand (NOTE: probably should refactor this)... return; } Block block = event.getClickedBlock(); this.plugin.handlePlayerEat(event.getPlayer(), block); break; } } @Override public void onPlayerRespawn(PlayerRespawnEvent event) { // Check if resetHungerAtRespawn is set to true if (this.plugin.getConfig().resetHungerAtRespawn) { // ... if it is, set the player's hunger to config.defaultHunger this.plugin.getConfig().playerHungers.put(event.getPlayer() .getName(), this.plugin.getConfig().defaultHunger); } } }