mirror of https://github.com/tomasff/BeesPlus.git
107 lines
3.5 KiB
Java
107 lines
3.5 KiB
Java
package com.tomff.beesplus.handlers;
|
|
|
|
import com.tomff.beesplus.BeesPlus;
|
|
import com.tomff.beesplus.gui.BeeHiveInfo;
|
|
import com.tomff.beesplus.gui.BeeInfo;
|
|
import com.tomff.beesplus.core.gui.GuiManager;
|
|
import org.bukkit.EntityEffect;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Beehive;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.entity.Bee;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.block.Action;
|
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.inventory.EquipmentSlot;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import java.util.Arrays;
|
|
|
|
public class RightClickHandler implements Listener {
|
|
|
|
private final BeesPlus beesPlus;
|
|
private final GuiManager guiManager;
|
|
|
|
private final boolean removeAnger;
|
|
|
|
private final Material[] flowers = {
|
|
Material.SUNFLOWER, Material.DANDELION,
|
|
Material.POPPY, Material.BLUE_ORCHID,
|
|
Material.ALLIUM, Material.ORANGE_TULIP,
|
|
Material.PINK_TULIP, Material.RED_TULIP,
|
|
Material.WHITE_TULIP, Material.AZURE_BLUET,
|
|
Material.LILY_OF_THE_VALLEY, Material.OXEYE_DAISY,
|
|
Material.CORNFLOWER
|
|
};
|
|
|
|
public RightClickHandler(BeesPlus beesPlus) {
|
|
this.beesPlus = beesPlus;
|
|
this.guiManager = beesPlus.getGuiManager();
|
|
|
|
removeAnger = beesPlus.getConfig().getBoolean("healing.removeanger", true);
|
|
}
|
|
|
|
private boolean isFlower(ItemStack item) {
|
|
return Arrays.stream(flowers).anyMatch(flower -> item.getType().equals(flower));
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInteraction(PlayerInteractEntityEvent event) {
|
|
Player player = event.getPlayer();
|
|
Entity target = event.getRightClicked();
|
|
|
|
if (event.getHand() != EquipmentSlot.HAND) {
|
|
return;
|
|
}
|
|
|
|
if (target instanceof Bee) {
|
|
Bee bee = (Bee) target;
|
|
|
|
if (player.isSneaking() && player.hasPermission("beesplus.bee.view")) {
|
|
event.setCancelled(true);
|
|
|
|
guiManager.openGui(player, new BeeInfo(bee));
|
|
return;
|
|
}
|
|
|
|
ItemStack itemInHand = player.getInventory().getItemInMainHand();
|
|
|
|
if (isFlower(itemInHand) && bee.getHealth() < 10 && player.hasPermission("beesplus.bee.heal")) {
|
|
event.setCancelled(true);
|
|
|
|
if (removeAnger) {
|
|
bee.setAnger(0);
|
|
}
|
|
|
|
bee.setHealth(bee.getHealth() + 1);
|
|
bee.playEffect(EntityEffect.LOVE_HEARTS);
|
|
player.getInventory().removeItem(new ItemStack(itemInHand.getType(), 1));
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onRightClick(PlayerInteractEvent event) {
|
|
Player player = event.getPlayer();
|
|
Action action = event.getAction();
|
|
Block clickedBlock = event.getClickedBlock();
|
|
|
|
if (event.getHand() != EquipmentSlot.HAND) {
|
|
return;
|
|
}
|
|
|
|
if (action == Action.RIGHT_CLICK_BLOCK && player.isSneaking() && clickedBlock != null) {
|
|
if ((clickedBlock.getType().equals(Material.BEEHIVE) || clickedBlock.getType().equals(Material.BEE_NEST)) && player.hasPermission("beesplus.beehive.view")) {
|
|
event.setCancelled(true);
|
|
|
|
Beehive beehive = (Beehive) clickedBlock.getState();
|
|
guiManager.openGui(player, new BeeHiveInfo(beehive));
|
|
}
|
|
}
|
|
}
|
|
}
|