2020-07-02 00:46:39 +02:00
|
|
|
package com.tomff.beesplus.items;
|
|
|
|
|
|
|
|
import com.tomff.beesplus.BeesPlus;
|
|
|
|
import com.tomff.beesplus.core.items.CustomItem;
|
|
|
|
import com.tomff.beesplus.core.items.ItemBuilder;
|
|
|
|
import com.tomff.beesplus.localization.Localization;
|
2020-07-03 21:16:02 +02:00
|
|
|
import org.bukkit.Material;
|
|
|
|
import org.bukkit.NamespacedKey;
|
|
|
|
import org.bukkit.Sound;
|
2020-07-02 00:46:39 +02:00
|
|
|
import org.bukkit.block.Beehive;
|
|
|
|
import org.bukkit.block.Block;
|
|
|
|
import org.bukkit.enchantments.Enchantment;
|
|
|
|
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.PlayerInteractEvent;
|
|
|
|
import org.bukkit.inventory.EquipmentSlot;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
import org.bukkit.persistence.PersistentDataContainer;
|
|
|
|
import org.bukkit.persistence.PersistentDataType;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
public class BeeHiveUpgrade extends CustomItem implements Listener {
|
|
|
|
|
|
|
|
private NamespacedKey upgradeKey;
|
|
|
|
private int maxPopulation;
|
|
|
|
|
|
|
|
public BeeHiveUpgrade(BeesPlus beesPlus) {
|
|
|
|
upgradeKey = new NamespacedKey(beesPlus, "upgrade");
|
|
|
|
maxPopulation = beesPlus.getConfig().getInt("beehiveupgrade.maximumpopulation", 9);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String[] getRecipe() {
|
|
|
|
return new String[] {
|
|
|
|
"CCC",
|
|
|
|
"CHC",
|
|
|
|
"CCC"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Map<Character, Material> getIngredients() {
|
|
|
|
Map<Character, Material> ingredients = new HashMap<>();
|
|
|
|
|
|
|
|
ingredients.put('C', Material.HONEYCOMB);
|
|
|
|
ingredients.put('H', Material.BEEHIVE);
|
|
|
|
|
|
|
|
return ingredients;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ItemStack getResult() {
|
|
|
|
return new ItemBuilder(Material.HONEYCOMB)
|
|
|
|
.setName(Localization.get(Localization.BEEHIVE_UPGRADE_ITEM_NAME))
|
|
|
|
.setLore(Localization.get(Localization.BEEHIVE_UPGRADE_ITEM_LORE).split("\\|\\|"))
|
|
|
|
.setPersistentData(upgradeKey, PersistentDataType.STRING, "beehive")
|
|
|
|
.enchant(Enchantment.DURABILITY, 1)
|
|
|
|
.hideEnchantments()
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void onHiveClick(PlayerInteractEvent event) {
|
|
|
|
Player player = event.getPlayer();
|
|
|
|
Action action = event.getAction();
|
|
|
|
Block clickedBlock = event.getClickedBlock();
|
|
|
|
|
|
|
|
if (event.getHand() != EquipmentSlot.HAND) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (clickedBlock == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (event.getItem() == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (action == Action.RIGHT_CLICK_BLOCK && clickedBlock.getType().equals(Material.BEEHIVE)) {
|
|
|
|
ItemStack handItem = event.getItem();
|
|
|
|
ItemMeta handItemMeta = handItem.getItemMeta();
|
|
|
|
|
|
|
|
if (handItemMeta == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
PersistentDataContainer container = handItemMeta.getPersistentDataContainer();
|
|
|
|
|
|
|
|
if (!container.has(upgradeKey, PersistentDataType.STRING)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
String upgradeType = container.get(upgradeKey, PersistentDataType.STRING);
|
|
|
|
|
|
|
|
if (upgradeType.equals("beehive")) {
|
|
|
|
event.setCancelled(true);
|
|
|
|
|
|
|
|
Beehive beehive = (Beehive) clickedBlock.getState();
|
|
|
|
|
2020-07-03 21:39:10 +02:00
|
|
|
if (!player.hasPermission("beesplus.beehive.upgrade")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-07-02 00:46:39 +02:00
|
|
|
if (beehive.getMaxEntities() >= maxPopulation) {
|
|
|
|
Localization.sendMessage(player, Localization.BEEHIVE_UPGRADE_MAX);
|
|
|
|
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 2, 2);
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
beehive.setMaxEntities(beehive.getMaxEntities() + 3);
|
|
|
|
beehive.update();
|
|
|
|
|
|
|
|
Localization.sendMessage(player, Localization.BEEHIVE_UPGRADE_SUCCESS, beehive.getMaxEntities());
|
|
|
|
player.playSound(player.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 2, 2);
|
|
|
|
|
|
|
|
ItemStack upgradeAmountRemove = handItem.clone();
|
|
|
|
upgradeAmountRemove.setAmount(1);
|
|
|
|
|
|
|
|
player.getInventory().removeItem(upgradeAmountRemove);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|