net.lordsofcode.zephyrus.items.wands.WeakWand.java Source code

Java tutorial

Introduction

Here is the source code for net.lordsofcode.zephyrus.items.wands.WeakWand.java

Source

package net.lordsofcode.zephyrus.items.wands;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import net.lordsofcode.zephyrus.Zephyrus;
import net.lordsofcode.zephyrus.api.ISpell;
import net.lordsofcode.zephyrus.events.PlayerCraftSpellEvent;
import net.lordsofcode.zephyrus.utils.Lang;

import org.apache.commons.lang.WordUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;

/**
 * Zephyrus
 * 
 * @author minnymin3
 * @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html)
 * 
 */

public class WeakWand extends Wand {

    @Override
    public String getName() {
        return ChatColor.GRAY + "Weak Wand";
    }

    @Override
    public Recipe getRecipe() {
        ShapedRecipe recipe = new ShapedRecipe(getItem());
        recipe.shape("  C", " B ", "A  ");
        recipe.setIngredient('C', Material.REDSTONE);
        recipe.setIngredient('B', Material.STICK);
        recipe.setIngredient('A', Material.IRON_INGOT);
        return recipe;
    }

    @Override
    public boolean hasLevel() {
        return false;
    }

    @Override
    public String getPerm() {
        return "wand.basic";
    }

    @Override
    public int getManaDiscount(ISpell spell) {
        return 0;
    }

    @Override
    public int getReqLevel() {
        return 0;
    }

    @Override
    public int getPower(ISpell spell) {
        return 0;
    }

    @Override
    public String getSpell(ItemStack i) {
        return "";
    }

    @Override
    public List<String> getDefaultLore() {
        List<String> list = new ArrayList<String>();
        list.add(ChatColor.GRAY + "Weak Wand");
        list.add(ChatColor.GRAY + "Unable to craft spells above level 3");
        return list;
    }

    @Override
    public List<String> getBoundLore(ISpell spell) {
        return null;
    }

    @Override
    public String getBoundName(ISpell spell) {
        return ChatColor.GOLD + getDisplayName() + " [" + ChatColor.GOLD
                + WordUtils.capitalizeFully(spell.getDisplayName()) + "]";
    }

    @Override
    public boolean getCanBind(ISpell spell) {
        return false;
    }

    @Override
    @EventHandler(priority = EventPriority.LOW)
    public void bookShelfClick(PlayerInteractEvent e) {
        if (e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getType() == Material.BOOKSHELF
                && checkContainsName(e.getItem(), getItem().getItemMeta().getDisplayName())
                && !Zephyrus.getSpellMap().containsKey(getSpell(e.getItem()))) {
            if (Zephyrus.getConfig().getBoolean("Disable-Spell-Crafting")) {
                return;
            }
            Location loc = e.getClickedBlock().getLocation();
            BlockBreakEvent blockBreakEvent = new BlockBreakEvent(loc.getBlock(), e.getPlayer());
            Bukkit.getPluginManager().callEvent(blockBreakEvent);
            loc.setY(loc.getY() + 1);
            Entity[] entitys = getNearbyEntities(loc, 1);
            if (blockBreakEvent.isCancelled()) {
                return;
            }
            if (!getItems(entitys).isEmpty()) {
                Set<ItemStack> i = getItems(entitys);
                if (Zephyrus.getCraftMap().containsKey(i)) {
                    ISpell s = Zephyrus.getCraftMap().get(i);
                    if (s.isEnabled()) {
                        if (s.getReqLevel() <= 3) {
                            if (e.getPlayer().hasPermission("zephyrus.spell." + s.getName().toLowerCase())) {
                                if (s.getRequiredSpell() != null) {
                                    if (Zephyrus.getUser(e.getPlayer()).isLearned(s.getRequiredSpell())) {
                                        if (Zephyrus.getUser(e.getPlayer()).getLevel() >= s.getReqLevel()) {
                                            PlayerCraftSpellEvent craftEvent = new PlayerCraftSpellEvent(
                                                    e.getPlayer(), s);
                                            Bukkit.getServer().getPluginManager().callEvent(craftEvent);
                                            if (!craftEvent.isCancelled()) {
                                                for (Item item : getItemEntity(entitys)) {
                                                    item.remove();
                                                }
                                                dropSpell(e.getClickedBlock(), s.getDisplayName().toLowerCase(),
                                                        s.getDesc(), e.getPlayer());
                                            }
                                        } else {
                                            e.getPlayer().sendMessage(ChatColor.RED + Lang.get("wand.reqlevel")
                                                    .replace("[LEVEL]", s.getReqLevel() + ""));
                                        }
                                    } else {
                                        e.getPlayer().sendMessage(Lang.get("wand.reqspell").replace("[SPELL]",
                                                s.getRequiredSpell().getDisplayName()));
                                    }
                                } else {
                                    if (Zephyrus.getUser(e.getPlayer()).getLevel() >= s.getReqLevel()) {
                                        for (Item item : getItemEntity(entitys)) {
                                            item.remove();
                                        }
                                        dropSpell(e.getClickedBlock(), s.getDisplayName().toLowerCase(),
                                                s.getDesc(), e.getPlayer());
                                    } else {
                                        e.getPlayer().sendMessage(ChatColor.RED + Lang.get("wand.reqlevel")
                                                .replace("[LEVEL]", s.getReqLevel() + ""));
                                    }
                                }
                            } else {
                                e.getPlayer().sendMessage(ChatColor.RED
                                        + Lang.get("wand.noperm").replace("[WAND]", s.getDisplayName()));
                            }
                        } else {
                            Lang.errMsg("wand.lowlevelwand", e.getPlayer());
                        }
                    } else {
                        Lang.errMsg("disabled", e.getPlayer());
                    }
                } else {
                    Lang.errMsg("wand.nospell", e.getPlayer());
                }
            } else {
                Lang.errMsg("wand.nospell", e.getPlayer());
            }

        }
    }

}